Esempio n. 1
0
        public override void ActivateBatch(object world, ulong clusterObjectID)
        {
            System.Diagnostics.Debug.Assert(m_world == null, "Cannot activate already active object!");

            m_world         = (HkWorld)world;
            ClusterObjectID = clusterObjectID;
            IsInWorld       = true;

            Matrix rigidBodyMatrix = GetRigidBodyTransform();

            if (RigidBody != null)
            {
                RigidBody.SetWorldMatrix(rigidBodyMatrix);
                m_world.AddRigidBodyBatch(RigidBody);
            }
            if (RigidBody2 != null)
            {
                RigidBody2.SetWorldMatrix(rigidBodyMatrix);
                m_world.AddRigidBodyBatch(RigidBody2);
            }

            if (CharacterProxy != null)
            {
                CharacterProxy.SetRigidBodyTransform(rigidBodyMatrix);
                CharacterProxy.Activate(m_world);
            }

            foreach (var constraint in m_constraints)
            {
                m_constraintsAddBatch.Add(constraint);
            }
        }
Esempio n. 2
0
        internal void SetRigidBodyTransform(MatrixD worldMatrix)
        {
            Matrix rigidBodyMatrix = GetRigidBodyMatrix(worldMatrix);

            if (RigidBody != null)
            {
                RigidBody.SetWorldMatrix(rigidBodyMatrix);
            }

            Matrix m  = RigidBody.GetRigidBodyMatrix();
            Matrix wM = GetWorldMatrix();

            if (RigidBody2 != null)
            {
                RigidBody2.SetWorldMatrix(rigidBodyMatrix);
            }

            if (CharacterProxy != null)
            {
                CharacterProxy.Position = rigidBodyMatrix.Translation;
                CharacterProxy.Forward  = rigidBodyMatrix.Forward;
                CharacterProxy.Up       = rigidBodyMatrix.Up;
                CharacterProxy.Speed    = 0;

                if (CharacterProxy.ImmediateSetWorldTransform)
                {
                    CharacterProxy.SetRigidBodyTransform(rigidBodyMatrix);
                }
            }
        }