示例#1
0
 private void CollectAllLeaves(BspTreeElement bspTreeElement)
 {
     if (bspTreeElement == null)
         return;
     if (bspTreeElement is BspTreeNode)
     {
         CollectAllLeaves(((BspTreeNode)bspTreeElement).Front);
         CollectAllLeaves(((BspTreeNode)bspTreeElement).Back);
         return;
     }
     var leaf = (BspTreeLeaf)bspTreeElement;
     int i;
     if (leafIndices.TryGetValue(leaf, out i))
         return;
     i = allLeaves.Count;
     allLeaves.Add(leaf);
     leafIndices[leaf] = i;
     foreach (var v in leaf.VisibleLeaves)
         CollectAllLeaves(v);
 }
示例#2
0
 private int AddTreeNode(Cb4aLevel l, BspTreeElement bspTreeElement)
 {
     if (bspTreeElement is BspTreeNode)
         return AddTreeNode(l, (BspTreeNode)bspTreeElement);
     return AddTreeLeaf(l, (BspTreeLeaf)bspTreeElement);
 }