public override List <int> Query(RectangleF bounds) { List <int> result = new List <int>(); if (Boundary.CompletelyWithin(bounds)) { for (int i = 0; i < objects.Length; i++) { if (objects[i] == null) { continue; } result.Add(objects[i].Identifier); } } else { for (int i = 0; i < objects.Length; i++) { if (objects[i] == null) { continue; } if (bounds.Intersects(objects[i].Bounds)) { result.Add(objects[i].Identifier); } } } if (!divided) { return(result); } result.AddRange(topLeft.Query(bounds)); result.AddRange(topRight.Query(bounds)); result.AddRange(bottomRight.Query(bounds)); result.AddRange(bottomLeft.Query(bounds)); return(result); }