private void Start() { _nodeStreamingVisitor = TraverseAndStream; // _nodeGizmoVisitor = TraverseAndDrawGizmos; if (_initializeSelf) { Initialize(); } }
public static void Traverse <T, TData>(QuadTree <T> tree, int nodeIndex, QtNodeVisitor <T, TData> visitor, TData data) { var node = tree[nodeIndex]; if (!visitor(node, data) || !node.HasChildren) { return; } for (int i = 0; i < 4; i++) { Traverse(tree, node.Children[i], visitor, data); } }
public static void TraverseWithStack <T, TData>(this QuadTree <T> tree, QtNodeVisitor <T, TData> visitor, TData data) { Clear(); Push(0); while (_stackPointer >= 0) { var nodeIndex = Pop(); var node = tree[nodeIndex]; if (!visitor(node, data) || !node.HasChildren) { continue; } for (int i = 0; i < 4; i++) { Push(node.Children[i]); } } }
public static void Traverse <T, TData>(this QuadTree <T> tree, QtNodeVisitor <T, TData> visitor, TData data) { Traverse(tree, 0, visitor, data); }