BEPUphysics.Entities.Entity.BecomeKinematic C# (CSharp) Method

BecomeKinematic() public method

Forces the entity to become kinematic. Kinematic entities have infinite mass and inertia.
public BecomeKinematic ( ) : void
return void
        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;
        }

Usage Example

Ejemplo n.º 1
0
 public virtual void SetCollision(PhysicsInfo PI, bool immovable)
 {
     Entity = PI.GetEntity(initscale, out preTransform);
     Entity.Position += Position;
     if (immovable)
     {
         Entity.BecomeKinematic();
     }
 }