Skip to content

Instantly share code, notes, and snippets.

@pinkwerks
Last active March 18, 2020 07:53
Show Gist options
  • Save pinkwerks/ab2a393104aff553aa3e4e3ca466104c to your computer and use it in GitHub Desktop.
Save pinkwerks/ab2a393104aff553aa3e4e3ca466104c to your computer and use it in GitHub Desktop.
private List<Vector3> UniformGrid(Vector3Int numDivisions, Vector3 gridPosition, float scale = 1)
{
Assert.IsTrue(numDivisions.x > 0);
Assert.IsTrue(numDivisions.y > 0);
Assert.IsTrue(numDivisions.z > 0);
var count = numDivisions.x * numDivisions.y * numDivisions.z;
List<Vector3> gridResult = new List<Vector3>(count);
for (int i = 0; i < count; ++i)
{
var position = new Vector3
{
x = (i / (numDivisions.y * numDivisions.z)) / Mathf.Max(1, (float)(numDivisions.x - 1)),
y = ((i / numDivisions.z) % numDivisions.y) / Mathf.Max(1, (float)(numDivisions.y - 1)),
z = (i % numDivisions.z) / Mathf.Max(1, (float)(numDivisions.z - 1))
};
if (numDivisions.x > 1)
position.x -= .5f;
if (numDivisions.y > 1)
position.y -= .5f;
if (numDivisions.z > 1)
position.z -= .5f;
position *= scale;
position += gridPosition;
Debug.DrawRay(position, Vector3.up * .1f, Color.green, float.MaxValue);
gridResult.Add(position);
}
return gridResult;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment