public void BecomeKinematic() { bool previousState = isDynamic; isDynamic = false; LocalInertiaTensorInverse = new Matrix3x3(); mass = 0; inverseMass = 0; //Notify simulation island of the change. if (previousState) { if (activityInformation.DeactivationManager != null) activityInformation.DeactivationManager.RemoveSimulationIslandFromMember(activityInformation); if (((IForceUpdateable)this).ForceUpdater != null) ((IForceUpdateable)this).ForceUpdater.ForceUpdateableBecomingKinematic(this); } //Change the collision group if it was using the default. if (collisionInformation.CollisionRules.Group == CollisionRules.DefaultDynamicCollisionGroup || collisionInformation.CollisionRules.Group == null) collisionInformation.CollisionRules.Group = CollisionRules.DefaultKinematicCollisionGroup; activityInformation.Activate(); //Preserve velocity and reinitialize momentum for new state. LinearVelocity = linearVelocity; AngularVelocity = angularVelocity; }
public virtual void SetCollision(PhysicsInfo PI, bool immovable) { Entity = PI.GetEntity(initscale, out preTransform); Entity.Position += Position; if (immovable) { Entity.BecomeKinematic(); } }