private void CheckForCollisionSimpleCommand() { List <BoundingBox> regions = new List <BoundingBox>(); List <Vector3> colPos = new List <Vector3>(); this.root.GetCollisionRegions(ref regions, ref colPos, 0.01); this.PointsCollision = new List <Point3D>(CommonExtensions.ConvertVector3ListToPoint3DList(colPos)); }
private void CheckForCollisionsCommand() { List <BoundingBox> regions = new List <BoundingBox>(); List <Vector3> colPos = new List <Vector3>(); this.root.GetCollisionRegions(ref regions, ref colPos, 0.01); this.PointsCollision = new List <Point3D>(CommonExtensions.ConvertVector3ListToPoint3DList(colPos)); if (regions.Count > 0) { // the line marker FIRST, because the of the TRANSPARENCY SORTING List <SharpDX.Matrix> instances_LM = new List <Matrix>(); foreach (var pos in colPos) { SharpDX.Matrix Tr = SharpDX.Matrix.Translation(pos); instances_LM.Add(Tr); } this.colPointMarker.Instances = instances_LM; this.colPointMarker.Visibility = Visibility.Visible; // cell marker SECOND List <SharpDX.Matrix> instances_CM = new List <Matrix>(); int rn = regions.Count; for (int i = rn - 1; i >= 0; i--) { BoundingBox region = regions[i]; Vector3 dimensions = region.Maximum - region.Minimum; Vector3 half = dimensions / 2f; Vector3 center = region.Minimum + half; SharpDX.Matrix Sc = SharpDX.Matrix.Scaling(dimensions - new Vector3((float)VIS_OFFSET)); SharpDX.Matrix Tr = SharpDX.Matrix.Translation(center); instances_CM.Add(Sc * Tr); } this.cellFill.Instances = instances_CM; this.cellFill.Visibility = Visibility.Visible; } else { this.cellFill.Instances = new List <Matrix>(); this.cellFill.Visibility = Visibility.Hidden; this.colPointMarker.Instances = new List <Matrix>(); this.colPointMarker.Visibility = Visibility.Hidden; } }