Ejemplo n.º 1
0
        private void UpdateMass(HkRigidBody rigidBody)
        {
            if (!m_grid.IsStatic && !rigidBody.IsFixed && rigidBody.GetMotionType() != HkMotionType.Keyframed)
            {
                ProfilerShort.Begin("Update mass");
                if (!MyPerGameSettings.Destruction)
                    UpdateMassProperties();
                ProfilerShort.End();

                ProfilerShort.Begin("Set mass");
                rigidBody.Mass = m_massProperties.Mass;
                rigidBody.SetMassProperties(ref m_massProperties);
                ProfilerShort.End();
            }
        }
Ejemplo n.º 2
0
        private void UpdateMass(HkRigidBody rigidBody, bool setMass = true)
        {
            if (!m_grid.IsStatic && !rigidBody.IsFixed && rigidBody.GetMotionType() != HkMotionType.Keyframed)
            {
                ProfilerShort.Begin("Update mass");
                if (!MyPerGameSettings.Destruction)
                    UpdateMassProperties();
                ProfilerShort.End();

                ProfilerShort.Begin("Set mass");
                if (setMass)
                {
                    if (m_grid.Physics.IsWelded || m_grid.Physics.WeldInfo.Children.Count != 0)
                    {
                        m_grid.Physics.WeldedRigidBody.SetMassProperties(ref m_massProperties);
                        m_grid.Physics.WeldInfo.SetMassProps(m_massProperties);
                        m_grid.Physics.UpdateMassProps();
                    }
                    else
                    {
                        rigidBody.Mass = m_massProperties.Mass;
                        rigidBody.SetMassProperties(ref m_massProperties);
                    }
                }
                ProfilerShort.End();
            }
        }