public GetQuadTreeItemFor ( Vector3 vec, Vector3 size, int maxDepth ) : List |
||
vec | Vector3 | |
size | Vector3 | |
maxDepth | int | |
return | List |
public List<QuadTreeItem> GetQuadTreeItemFor(Vector3 vec, Vector3 size, int maxDepth)
{
var result = new List<QuadTreeItem>();
Vector3 leftFront = new Vector3(vec.x - size.x/2.0f, vec.y, vec.z - size.z/2.0f);
Vector3 rightFront = new Vector3(vec.x + size.x/2.0f, vec.y, vec.z - size.z/2.0f);
Vector3 leftBack = new Vector3(vec.x - size.x/2.0f, vec.y, vec.z + size.z/2.0f);
Vector3 rightBack = new Vector3(vec.x + size.x/2.0f, vec.y, vec.z + size.z/2.0f);
result.Add(GetQuadTreeItemFor(leftFront, maxDepth));
result.Add(GetQuadTreeItemFor(rightFront, maxDepth));
result.Add(GetQuadTreeItemFor(leftBack, maxDepth));
result.Add(GetQuadTreeItemFor(rightBack, maxDepth));
return result;
}
QuadTree::GetQuadTreeItemFor ( Vector3 vec, int maxDepth ) : QuadTreeItem |
List <GameObject> GetGameObjectsOnTheWay(Vector3 start, Vector3 end) { List <GameObject> result = new List <GameObject>(); QuadTree qt = GameObject.Find("QuadTreeGenerator").GetComponent <QuadTree>(); float dx = end.x - start.x; float dy = end.y - start.y; float lastX = start.x, lastY = y1; for (float x = start.x; x < end.x; x++) { float y = y1 + (dy) * (x - x1) / (dx); if (Mathf.Abs(lastX - x) > 1 || Mathf.Abs(lastY - y) > 1) { QuadTreeItem qti = qt.GetQuadTreeItemFor(new Vector3(x, 0.0f, y), 1); result.AddRange(qti.GameObjects); lastX = x; lastY = y; } } return(result); }