using System.Collections.Generic; using Microsoft.Xna.Framework; namespace EvilSatellites.Quadtree { public class Quadtree where T : Positional { public Vector3 Dimensions { get; set; } public int MaxLevels; public int MaxObjects; public QuadtreeNode Root; public Quadtree(Vector3 dimensions, int maxLevels, int maxObjects) { Dimensions = dimensions; this.MaxLevels = maxLevels; this.MaxObjects = maxObjects; this.Root = new QuadtreeNode(new Vector3(0, 0, 0), Dimensions, MaxLevels, MaxObjects, 0); } public void Add(T obj) { Root.Add(obj); } public void Clear() { this.Root = new QuadtreeNode(new Vector3(0, 0, 0), Dimensions, MaxLevels, MaxObjects, 0); } public List Find(Vector3 Position, Vector3 dimensions) { return Root.Find(Position, dimensions); } public List Find(Vector3 Position) { return Root.Find(Position, new Vector3(1, 1, 1)); } } }