public OcTreeNode Insert(Geometry geometry, int depth, int maxDepth) { if (depth < maxDepth) { OcTreeNode node = GetContainerNode(geometry); if (node != null) { return(node.Insert(geometry, depth + 1, maxDepth)); } } m_Geometries.Add(geometry); return(this); }
public override void Build(List <Geometry> geometries) { Bounds bounds = geometries[0].bounds; for (int i = 1; i < geometries.Count; i++) { bounds.Encapsulate(geometries[i].bounds); } bounds.size *= 1.1; m_Node = new OcTreeNode(bounds); for (int i = 0; i < geometries.Count; i++) { m_Node.Insert(geometries[i], 0, 5); } }