/// <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; } }
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; }