예제 #1
0
 public virtual void SetUpBulletPhysicsBody(float mass, IMotionState motionState, CollisionShape collisionShape, Vector3 localInertia)
 {
     Mass           = mass;
     CollisionShape = collisionShape;
     Inertia        = localInertia;
     SetUpBulletPhysicsBody();
 }
예제 #2
0
        ///btRigidBody constructor for backwards compatibility.
        ///To specify friction (etc) during rigid body construction, please use the other constructor (using btRigidBodyConstructionInfo)
        public RigidBody(float mass, IMotionState motionState, CollisionShape collisionShape, IndexedVector3 localInertia)
        {
            RigidBodyConstructionInfo cinfo = new RigidBodyConstructionInfo(mass, motionState, collisionShape, localInertia);

            motionState.SetRigidBody(this);

            SetupRigidBody(cinfo);
        }
예제 #3
0
 public RigidBody(float mass, IMotionState motionState, CollisionShape collisionShape, btVector3 localInertia)
 {
     shape       = collisionShape;
     MotionState = motionState;
     shape.act.setMass(mass);
     shape.act.setMotionState(motionState);
     inertia = localInertia;
 }
예제 #4
0
 public void SetMotionState(IMotionState motionState)
 {
     m_optionalMotionState = motionState;
     if (m_optionalMotionState != null)
     {
         motionState.GetWorldTransform(out m_worldTransform);
     }
 }
예제 #5
0
        ///setupRigidBody is only used internally by the constructor
        protected void      SetupRigidBody(RigidBodyConstructionInfo constructionInfo)
        {
            m_internalType = CollisionObjectTypes.CO_RIGID_BODY;

            m_linearVelocity       = IndexedVector3.Zero;
            m_angularVelocity      = IndexedVector3.Zero;
            m_angularFactor        = IndexedVector3.One;
            m_linearFactor         = IndexedVector3.One;
            m_gravity              = IndexedVector3.Zero;
            m_gravity_acceleration = IndexedVector3.Zero;
            m_totalForce           = IndexedVector3.Zero;
            m_totalTorque          = IndexedVector3.Zero;
            SetDamping(constructionInfo.m_linearDamping, constructionInfo.m_angularDamping);
            m_linearSleepingThreshold              = constructionInfo.m_linearSleepingThreshold;
            m_angularSleepingThreshold             = constructionInfo.m_angularSleepingThreshold;
            m_optionalMotionState                  = constructionInfo.m_motionState;
            m_contactSolverType                    = 0;
            m_frictionSolverType                   = 0;
            m_additionalDamping                    = constructionInfo.m_additionalDamping;
            m_additionalDampingFactor              = constructionInfo.m_additionalDampingFactor;
            m_additionalLinearDampingThresholdSqr  = constructionInfo.m_additionalLinearDampingThresholdSqr;
            m_additionalAngularDampingThresholdSqr = constructionInfo.m_additionalAngularDampingThresholdSqr;
            m_additionalAngularDampingFactor       = constructionInfo.m_additionalAngularDampingFactor;

            if (m_optionalMotionState != null)
            {
                m_optionalMotionState.GetWorldTransform(out m_worldTransform);
            }
            else
            {
                SetWorldTransform(ref constructionInfo.m_startWorldTransform);
            }

            m_interpolationWorldTransform  = m_worldTransform;
            m_interpolationLinearVelocity  = IndexedVector3.Zero;
            m_interpolationAngularVelocity = IndexedVector3.Zero;

            //moved to btCollisionObject
            m_friction    = constructionInfo.m_friction;
            m_restitution = constructionInfo.m_restitution;

            SetCollisionShape(constructionInfo.m_collisionShape);
            m_debugBodyId = uniqueId++;

            SetMassProps(constructionInfo.m_mass, constructionInfo.m_localInertia);
            UpdateInertiaTensor();
            m_rigidbodyFlags = RigidBodyFlags.BT_NONE;
            m_constraintRefs = new List <TypedConstraint>();

            m_deltaLinearVelocity  = IndexedVector3.Zero;
            m_deltaAngularVelocity = IndexedVector3.Zero;
            m_invMass      = m_inverseMass * m_linearFactor;
            m_pushVelocity = IndexedVector3.Zero;
            m_turnVelocity = IndexedVector3.Zero;
        }
예제 #6
0
        /// <summary>
        /// RigidBodyを生成するときに初期化される
        /// </summary>
        /// <param name="ms"></param>
        public void setMotionState(IMotionState ms)
        {
            motionState = ms;

            // MMDXのパーツ座標を取得する
            btTransform world;

            motionState.getWorldTransform(out world);

            // 初期値をセットする
            actorDesc.GlobalPose = world.getMatrix();
        }
예제 #7
0
 public RigidBodyConstructionInfo(float mass, IMotionState motionState, CollisionShape collisionShape, IndexedVector3 localInertia)
 {
     m_mass                                 = mass;
     m_motionState                          = motionState;
     m_collisionShape                       = collisionShape;
     m_localInertia                         = localInertia;
     m_linearDamping                        = 0f;
     m_angularDamping                       = 0f;
     m_friction                             = 0.5f;
     m_restitution                          = 0f;
     m_linearSleepingThreshold              = 0.8f;
     m_angularSleepingThreshold             = 1f;
     m_additionalDamping                    = false;
     m_additionalDampingFactor              = 0.005f;
     m_additionalLinearDampingThresholdSqr  = 0.01f;
     m_additionalAngularDampingThresholdSqr = 0.01f;
     m_additionalAngularDampingFactor       = 0.01f;
     m_startWorldTransform                  = IndexedMatrix.Identity;
 }
		public RigidBodyConstructionInfo(float mass, IMotionState motionState, CollisionShape collisionShape, Vector3 localInertia)
		{
			m_mass = mass;
			m_motionState = motionState;
			m_collisionShape = collisionShape;
			m_localInertia = localInertia;
			m_linearDamping = 0f;
			m_angularDamping = 0f;
			m_friction = 0.5f;
			m_restitution = 0f;
			m_linearSleepingThreshold = 0.8f;
			m_angularSleepingThreshold = 1f;
			m_additionalDamping = false;
			m_additionalDampingFactor = 0.005f;
			m_additionalLinearDampingThresholdSqr = 0.01f;
			m_additionalAngularDampingThresholdSqr = 0.01f;
			m_additionalAngularDampingFactor = 0.01f;
			m_startWorldTransform = Matrix.Identity;
		}
예제 #9
0
        public IMotionState GetMotionState(string stateKey)
        {
            if (motionStateFlyweights.ContainsKey(stateKey))
            {
                return(motionStateFlyweights[stateKey]);
            }
            else
            {
                IMotionState motionState = null;
                switch (stateKey)
                {
                case "turnAround":
                    motionState = new TurnAroundState();
                    break;

                case "straightFast":
                    motionState = new MoveStraightFastState();
                    break;

                case "straightSlow":
                    motionState = new MoveStraightSlowState();
                    break;

                case "turnLeft":
                    motionState = new TurnLeftState();
                    break;

                case "turnRight":
                    motionState = new TurnRightState();
                    break;

                default:
                    motionState = new DoNothingState();
                    break;
                }

                motionStateFlyweights.Add(stateKey, motionState);

                return(motionState);
            }
        }
예제 #10
0
파일: RigidBody.cs 프로젝트: himapo/ccm
        internal void setupRigidBody(RigidBodyConstructionInfo constructionInfo)
        {
            m_linearVelocity.setValue(0.0f, 0.0f, 0.0f);
            m_angularVelocity.setValue(0f, 0f, 0f);
            m_angularFactor.setValue(1, 1, 1);
            m_linearFactor.setValue(1, 1, 1);
            m_gravity.setValue(0.0f, 0.0f, 0.0f);
            m_gravity_acceleration.setValue(0.0f, 0.0f, 0.0f);
            m_totalForce.setValue(0.0f, 0.0f, 0.0f);
            m_totalTorque.setValue(0.0f, 0.0f, 0.0f);
            m_linearDamping = 0f;
            m_angularDamping = 0.5f;
            m_linearSleepingThreshold = constructionInfo.m_linearSleepingThreshold;
            m_angularSleepingThreshold = constructionInfo.m_angularSleepingThreshold;
            m_optionalMotionState = constructionInfo.m_motionState;
            m_contactSolverType = 0;
            m_frictionSolverType = 0;
            m_additionalDamping = constructionInfo.m_additionalDamping;
            m_additionalDampingFactor = constructionInfo.m_additionalDampingFactor;
            m_additionalLinearDampingThresholdSqr = constructionInfo.m_additionalLinearDampingThresholdSqr;
            m_additionalAngularDampingThresholdSqr = constructionInfo.m_additionalAngularDampingThresholdSqr;
            m_additionalAngularDampingFactor = constructionInfo.m_additionalAngularDampingFactor;

            if (m_optionalMotionState != null)
            {
                m_optionalMotionState.getWorldTransform(out WorldTransform);
            }
            else
            {
                WorldTransform = constructionInfo.m_startWorldTransform;
            }

            m_interpolationWorldTransform = WorldTransform;
            m_interpolationLinearVelocity.setValue(0, 0, 0);
            m_interpolationAngularVelocity.setValue(0, 0, 0);

            //moved to btCollisionObject
            m_friction = constructionInfo.m_friction;
            m_restitution = constructionInfo.m_restitution;

            this.CollisionShape = constructionInfo.m_collisionShape;
            m_debugBodyId = uniqueId++;

            setMassProps(constructionInfo.m_mass, constructionInfo.m_localInertia);
            setDamping(constructionInfo.m_linearDamping, constructionInfo.m_angularDamping);
            updateInertiaTensor();

            RigidBodyFlag = RigidBodyFlags.BT_NONE;


            m_deltaLinearVelocity.setZero();
            m_deltaAngularVelocity.setZero();
            m_invMass = m_linearFactor * m_inverseMass;
            m_pushVelocity.setZero();
            m_turnVelocity.setZero();

        }
예제 #11
0
 public RigidBodyConstructionInfo(float mass, IMotionState motionState, CollisionShape collisionShape) : this(mass, motionState, collisionShape, new IndexedVector3(0))
 {
 }
예제 #12
0
 public void SetMotionState(IMotionState state)
 {
     _motionState = state;
 }
예제 #13
0
 public void SetState(IMotionState _state)
 {
     currentMotionState = _state;
 }
예제 #14
0
 public Transport()
 {
     name = "Transport";
     currentMotionState = null;
 }
예제 #15
0
파일: RigidBody.cs 프로젝트: himapo/ccm
 public RigidBody(float mass, IMotionState motionState, CollisionShape collisionShape, btVector3 localInertia)
 {
     setupRigidBody(new RigidBodyConstructionInfo(mass, motionState, collisionShape, localInertia));
 }
예제 #16
0
	    ///btRigidBody constructor for backwards compatibility. 
	    ///To specify friction (etc) during rigid body construction, please use the other constructor (using btRigidBodyConstructionInfo)
	    public RigidBody(float mass, IMotionState motionState, CollisionShape collisionShape, IndexedVector3 localInertia)
        {
            RigidBodyConstructionInfo cinfo = new RigidBodyConstructionInfo(mass,motionState,collisionShape,localInertia);
	        SetupRigidBody(cinfo);
        }
예제 #17
0
	    public void	SetMotionState(IMotionState motionState)
	    {
		    m_optionalMotionState = motionState;
		    if (m_optionalMotionState != null)
            {
                motionState.GetWorldTransform(out m_worldTransform);
            }
	    }
예제 #18
0
	    ///setupRigidBody is only used internally by the constructor
	    protected void	SetupRigidBody(RigidBodyConstructionInfo constructionInfo)
        {
	        m_internalType=CollisionObjectTypes.CO_RIGID_BODY;

	        m_linearVelocity = IndexedVector3.Zero;
	        m_angularVelocity = IndexedVector3.Zero;
            m_angularFactor = IndexedVector3.One;
            m_linearFactor = IndexedVector3.One;
	        m_gravity = IndexedVector3.Zero;
	        m_gravity_acceleration = IndexedVector3.Zero;
	        m_totalForce = IndexedVector3.Zero;
	        m_totalTorque = IndexedVector3.Zero;
			SetDamping(constructionInfo.m_linearDamping, constructionInfo.m_angularDamping);
	        m_linearSleepingThreshold = constructionInfo.m_linearSleepingThreshold;
	        m_angularSleepingThreshold = constructionInfo.m_angularSleepingThreshold;
	        m_optionalMotionState = constructionInfo.m_motionState;
	        m_contactSolverType = 0;
	        m_frictionSolverType = 0;
	        m_additionalDamping = constructionInfo.m_additionalDamping;
	        m_additionalDampingFactor = constructionInfo.m_additionalDampingFactor;
	        m_additionalLinearDampingThresholdSqr = constructionInfo.m_additionalLinearDampingThresholdSqr;
	        m_additionalAngularDampingThresholdSqr = constructionInfo.m_additionalAngularDampingThresholdSqr;
	        m_additionalAngularDampingFactor = constructionInfo.m_additionalAngularDampingFactor;

	        if (m_optionalMotionState != null)
	        {
		        m_optionalMotionState.GetWorldTransform(out m_worldTransform);
	        } 
            else
	        {
		        SetWorldTransform(ref constructionInfo.m_startWorldTransform);
	        }

	        m_interpolationWorldTransform = m_worldTransform;
            m_interpolationLinearVelocity = IndexedVector3.Zero;
            m_interpolationAngularVelocity = IndexedVector3.Zero;
        	
	        //moved to btCollisionObject
	        m_friction = constructionInfo.m_friction;
	        m_restitution = constructionInfo.m_restitution;

	        SetCollisionShape( constructionInfo.m_collisionShape );
	        m_debugBodyId = uniqueId++;
        	
	        SetMassProps(constructionInfo.m_mass, constructionInfo.m_localInertia);
	        UpdateInertiaTensor();
            m_rigidbodyFlags = RigidBodyFlags.BT_NONE;
            m_constraintRefs = new List<TypedConstraint>();

            m_deltaLinearVelocity = IndexedVector3.Zero;
            m_deltaAngularVelocity = IndexedVector3.Zero;
            m_invMass = m_inverseMass * m_linearFactor;
            m_pushVelocity = IndexedVector3.Zero;
            m_turnVelocity = IndexedVector3.Zero;

        }
예제 #19
0
        public RigidBodyConstructionInfo(float mass, IMotionState motionState, CollisionShape collisionShape): this(mass,motionState,collisionShape,new IndexedVector3(0))
        {

        }