Example #1
0
 /// <summary>
 /// Rebuilds the tree.
 /// </summary>
 /// <param name="items">The items.</param>
 public override void RebuildTree(IEnumerable <SceneNode> items)
 {
     Clear();
     if (items == null)
     {
         return;
     }
     if (items.FirstOrDefault() is IInstancing inst)
     {
         var instMatrix = inst.InstanceBuffer.Elements;
         var octree     = new InstancingModel3DOctree(instMatrix, (inst as SceneNode).OriginalBounds, this.Parameter, new Stack <KeyValuePair <int, IOctree[]> >(10));
         octree.BuildTree();
         Octree = octree;
     }
 }
Example #2
0
        public override void RebuildTree(IList <Element3D> items)
        {
            Clear();
            if (items == null || items.Count == 0)
            {
                return;
            }
            var model3D = items.Where(x => x is InstancingMeshGeometryModel3D).FirstOrDefault() as InstancingMeshGeometryModel3D;

            if (model3D == null)
            {
                return;
            }
            IList <Matrix> instMatrix = model3D.Instances;
            var            octree     = new InstancingModel3DOctree(instMatrix, model3D.BoundsWithTransform, this.Parameter, new Queue <IOctree>(256));

            octree.BuildTree();
            Octree = octree;
        }