private void Remove(QuadtreeNode <T> node, T value) { if (node == null) { return; } if (!node.Intersects(value.Collider)) { return; } if (!node.IsLeaf()) { foreach (QuadtreeNode <T> child in node.children) { Remove(child, value); } } else { if (node.Remove(value)) { if (node.IsEmpty()) { Collapse(node); } } } }
private void Insert(QuadtreeNode <T> node, T value) { if (node == null || !node.Intersects(value.Collider)) { return; } if (node.Size <= minSize) { node.AddObject(value); } else { if (node.IsLeaf()) { Split(node); } for (int i = 0; i < 4; i++) { Insert(node.children[i], value); } } }