private void GenerateSphereCollider() { RenderGeometryComponent geometry = ParentObject.GetComponent <RenderGeometryComponent>(); List <Vector3> verts = geometry.GetVertices(); BoundingSphere sphere = BoundingSphere.CreateFromPoints(verts); PhysicsEntity = new Sphere(MonoMathHelper.Translate(ParentObject.Transform.AbsoluteTransform.Translation), sphere.Radius, 1); PhysicsEntity.Tag = ParentObject; }
private void GenerateBoxCollider() { RenderGeometryComponent geometry = ParentObject.GetComponent <RenderGeometryComponent>(); List <Vector3> verts = geometry.GetVertices(); BoundingBox testBox = BoundingBox.CreateFromPoints(verts); float width = testBox.Max.X - testBox.Min.X; float height = testBox.Max.Y - testBox.Min.Y; float depth = testBox.Max.Z - testBox.Min.Z; PhysicsEntity = new Box(new BEPUutilities.Vector3(ParentObject.Transform.AbsoluteTransform.Translation.X, ParentObject.Transform.AbsoluteTransform.Translation.X, ParentObject.Transform.AbsoluteTransform.Translation.X), width, height, depth, 1); }
public void Draw(GameTime gameTime) { //read render data from buffer. if (renderData == null) { RenderGeometryComponent renderGeometry = ParentObject.GetComponent <RenderGeometryComponent>(); renderData = new VertexPositionColorTextureNormal[renderGeometry.VertexBuffer.VertexCount]; renderGeometry.VertexBuffer.GetData <VertexPositionColorTextureNormal>(renderData); } for (int i = 0; i < renderData.Length; i++) { Vector3 transformedPosition = Vector3.Transform(renderData[i].Position, Matrix.CreateScale(ParentObject.Transform.Scale) * ParentObject.Transform.AbsoluteTransform); Vector3 transformedNormal = Vector3.Transform(renderData[i].Normal, Matrix.CreateScale(ParentObject.Transform.Scale) * ParentObject.Transform.AbsoluteTransform); DebugShapeRenderer.AddLine(transformedPosition, transformedPosition + transformedNormal * 0.1f, Color.Red); } }