public CollisionTransform(CollisionSkin collision, Scene scene)
 {
     this.scene = scene;
     this.collision = collision;
     this.collisionTransform = new JigLibX.Math.Transform(position, worldMatrix);
     this.oldTransform = collisionTransform;
 }
示例#2
0
 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);

            }
        }