private void AddShapeToDrawList(Shape shape, JMatrix ori, JVector pos) { Primitives3D.GeometricPrimitive primitive = null; Matrix scaleMatrix = Matrix.Identity; if (shape is BoxShape) { primitive = primitives[(int)Primitives.box]; scaleMatrix = Matrix.CreateScale(Conversion.ToXNAVector((shape as BoxShape).Size)); } else if (shape is SphereShape) { primitive = primitives[(int)Primitives.sphere]; scaleMatrix = Matrix.CreateScale((shape as SphereShape).Radius); } else if (shape is CylinderShape) { primitive = primitives[(int)Primitives.cylinder]; CylinderShape cs = shape as CylinderShape; scaleMatrix = Matrix.CreateScale(cs.Radius, cs.Height, cs.Radius); } else if (shape is CapsuleShape) { primitive = primitives[(int)Primitives.capsule]; CapsuleShape cs = shape as CapsuleShape; scaleMatrix = Matrix.CreateScale(cs.Radius * 2, cs.Length, cs.Radius * 2); } else if (shape is ConeShape) { ConeShape cs = shape as ConeShape; scaleMatrix = Matrix.CreateScale(cs.Radius, cs.Height, cs.Radius); primitive = primitives[(int)Primitives.cone]; } /*else if (shape is ConvexHullShape) * { * Console.WriteLine("convex"); * ConvexHullShape cs = shape as ConvexHullShape; * //scaleMatrix = Matrix.CreateScale(cs.Radius, cs.Height, cs.Radius); * //scaleMatrix = Matrix.CreateScale(Conversion.ToXNAVector((shape as BoxShape).Size)); * primitive = primitives[(int)Primitives.convexHull]; * * }*/ if (primitive != null) { primitive.AddWorldMatrix(scaleMatrix * Conversion.ToXNAMatrix(ori) * Matrix.CreateTranslation(Conversion.ToXNAVector(pos))); } }
private void AddShapeToDrawList(Shape shape, JMatrix ori, JVector pos) { Primitives3D.GeometricPrimitive primitive = null; var scaleMatrix = Matrix.Identity; if (shape is BoxShape) { primitive = primitives[(int)Primitives.box]; scaleMatrix = Matrix.CreateScale(Conversion.ToXNAVector((shape as BoxShape).Size)); } else if (shape is SphereShape) { primitive = primitives[(int)Primitives.sphere]; scaleMatrix = Matrix.CreateScale((shape as SphereShape).Radius); } else if (shape is CylinderShape) { primitive = primitives[(int)Primitives.cylinder]; var cs = shape as CylinderShape; scaleMatrix = Matrix.CreateScale(cs.Radius, cs.Height, cs.Radius); } else if (shape is CapsuleShape) { primitive = primitives[(int)Primitives.capsule]; var cs = shape as CapsuleShape; scaleMatrix = Matrix.CreateScale(cs.Radius * 2, cs.Length, cs.Radius * 2); } else if (shape is ConeShape) { var cs = shape as ConeShape; scaleMatrix = Matrix.CreateScale(cs.Radius, cs.Height, cs.Radius); primitive = primitives[(int)Primitives.cone]; } primitive?.AddWorldMatrix(scaleMatrix * Conversion.ToXNAMatrix(ori) * Matrix.CreateTranslation(Conversion.ToXNAVector(pos))); }