using System.Collections.Generic;
using System.Diagnostics;
using QuadTrees.QTreePointF;
public static void Main(string[] args)
QuadTreePointF<Character> qtree = new QuadTreePointF<Character>(new RectangleF(25000.0f, 15000.0f, 2000.0f, 2000.0f));
for(int j = 0; j < 10000; j++)
qtree.Add(new Character($"Dallasdevin{j}", GetRandomNumberInRangeX(), 50.0f, GetRandomNumberInRangeZ()));
Character stuff = new Character("TargetAcquired", 25700.0f, 50.0f, 15700.0f);
var list = new List<Character>();
qtree.GetObjects(stuff.createRectangle(), list);
Console.WriteLine($"Players near {stuff.myName}: {list.Count()}");
Console.Write($"Characters near point:");
foreach(Character c in list)
Console.Write($" {c.myName}");
Console.WriteLine(" present in list.");
qtree.TreeStats(out int i, out int l);
Console.WriteLine($"Internal Nodes: {i} Leaf Nodes: {l}");
var list1 = qtree.GetAllObjects();
Console.WriteLine($"Characters present in quadtree: {list1.Count()}");
static public void Reset(Character[] MyList)
for(int i = 0; i < MyList.Count(); i++)
public class Character : IPointFQuadStorable
public Character(string name, float X, float Y, float Z)
_rect = new PointF(X, Z);
public RectangleF createRectangle()
return new RectangleF(x-200, z-200, 400, 400);
public static float GetRandomNumberInRangeZ()
return (float)(new Random().NextDouble() * (17000 - 15000) + 15000);
public static float GetRandomNumberInRangeX()
return (float)(new Random().NextDouble() * (27000 - 25000) + 25000);