Superclass of the data used to create triangle mesh bounding box trees.
示例#1
0
 /// <summary>
 /// Creates a detector volume.
 /// </summary>
 /// <param name="triangleMesh">Arbitrary closed triangle mesh representing the volume.</param>
 /// <param name="queryAccelerator">System used to find nearby objects.</param>
 public DetectorVolume(MeshBoundingBoxTreeData triangleMesh, IQueryAccelerator queryAccelerator)
 {
     TriangleMesh = new TriangleMesh(triangleMesh);
     QueryAccelerator = queryAccelerator;
     collisionRules = new CollisionRules()
     {
          group = new CollisionGroup()
     };
 }
示例#2
0
 internal override void Refit(MeshBoundingBoxTreeData data)
 {
     data.GetBoundingBox(LeafIndex, out BoundingBox);
     //Having an ever-so-slight margin allows the hierarchy use a volume metric even for degenerate shapes (consider a flat tessellated plane).
     BoundingBox.Max.X += LeafMargin;
     BoundingBox.Max.Y += LeafMargin;
     BoundingBox.Max.Z += LeafMargin;
     BoundingBox.Min.X -= LeafMargin;
     BoundingBox.Min.Y -= LeafMargin;
     BoundingBox.Min.Z -= LeafMargin;
 }
示例#3
0
 /// <summary>
 /// Constructs a new tree.
 /// </summary>
 /// <param name="data">Data to use to construct the tree.</param>
 public MeshBoundingBoxTree(MeshBoundingBoxTreeData data)
 {
     Data = data;
 }
示例#4
0
 internal override void Refit(MeshBoundingBoxTreeData data)
 {
     ChildA.Refit(data);
     ChildB.Refit(data);
     BoundingBox.CreateMerged(ref ChildA.BoundingBox, ref ChildB.BoundingBox, out BoundingBox);
 }
示例#5
0
 internal abstract void Refit(MeshBoundingBoxTreeData data);
示例#6
0
 ///<summary>
 /// Constructs a new triangle mesh.
 ///</summary>
 ///<param name="data">Data to use to construct the mesh.</param>
 public TriangleMesh(MeshBoundingBoxTreeData data)
 {
     this.data = data;
     tree      = new MeshBoundingBoxTree(data);
 }
示例#7
0
 ///<summary>
 /// Constructs a new triangle mesh.
 ///</summary>
 ///<param name="data">Data to use to construct the mesh.</param>
 public TriangleMesh(MeshBoundingBoxTreeData data)
 {
     this.data = data;
     tree = new MeshBoundingBoxTree(data);
 }
示例#8
0
 internal abstract void Refit(MeshBoundingBoxTreeData data);
示例#9
0
 internal override void Refit(MeshBoundingBoxTreeData data)
 {
     data.GetBoundingBox(LeafIndex, out BoundingBox);
     //Having an ever-so-slight margin allows the hierarchy use a volume metric even for degenerate shapes (consider a flat tessellated plane).
     BoundingBox.Max.X += LeafMargin;
     BoundingBox.Max.Y += LeafMargin;
     BoundingBox.Max.Z += LeafMargin;
     BoundingBox.Min.X -= LeafMargin;
     BoundingBox.Min.Y -= LeafMargin;
     BoundingBox.Min.Z -= LeafMargin;
 }
示例#10
0
 internal override void Refit(MeshBoundingBoxTreeData data)
 {
     ChildA.Refit(data);
     ChildB.Refit(data);
     BoundingBox.CreateMerged(ref ChildA.BoundingBox, ref ChildB.BoundingBox, out BoundingBox);
 }
示例#11
0
 /// <summary>
 /// Constructs a new tree.
 /// </summary>
 /// <param name="data">Data to use to construct the tree.</param>
 public MeshBoundingBoxTree(MeshBoundingBoxTreeData data)
 {
     Data = data;
 }