public CollisionTransform(CollisionSkin collision, Scene scene) { this.scene = scene; this.collision = collision; this.collisionTransform = new JigLibX.Math.Transform(position, worldMatrix); this.oldTransform = collisionTransform; }
public override void OnAdd(Scene scene) { base.OnAdd(scene); if (false == true && mesh.GetCollisionMesh() != null) { Matrix currOrientation = Transformation.GetTransform(); currOrientation.Translation = Vector3.Zero; Vector3 currPosition = Transformation.GetPosition(); collisionTransform = new JigLibX.Math.Transform(currPosition, currOrientation); collision = new CollisionSkin(null); collision.AddPrimitive(mesh.GetCollisionMesh(), (int)MaterialTable.MaterialID.NotBouncyRough); scene.GetPhysicsEngine().CollisionSystem.AddCollisionSkin(collision); collision.SetNewTransform(ref collisionTransform); } }
protected override void UpdateMatrix() { base.UpdateMatrix(); if (collision != null) { this.oldTransform = collisionTransform; Matrix currOrientation = GetTransform(); currOrientation.Translation = Vector3.Zero; Vector3 currPosition = GetPosition(); collisionTransform.Orientation = currOrientation; collisionTransform.Position = currPosition; //collision.ApplyLocalTransform(new JigLibX.Math.Transform(Vector3.Zero, Matrix.Identity)); collision.SetTransform(ref oldTransform, ref collisionTransform); collision.UpdateWorldBoundingBox(); collision.CollisionSystem.CollisionSkinMoved(collision); } }