Exemplo n.º 1
0
        public override void UpdateAfterSimulation()
        {
            //  Change world matrix by rotation (order of matrix multiplications is important!!!)
            var rotationMatrix = Matrix.CreateRotationZ(m_rotatingSpeed * MyDrillDeviceConstants.ROTATION_SPEED_PER_SECOND * MyConstants.PHYSICS_STEP_SIZE_IN_SECONDS);

            LocalMatrix      = rotationMatrix * LocalMatrix;
            m_rotationMatrix = rotationMatrix * m_rotationMatrix;

            base.UpdateAfterSimulation();

            if (CurrentState == MyDrillStateEnum.InsideShip)
            {
                return;
            }

            MyAudio.UpdateCueRotationSpeed(m_drillCue, ((m_rotatingSpeed - m_maxRotatingSpeedIdle) / (m_maxRotatingSpeedDrilling - m_maxRotatingSpeedIdle) * 100));
            MyAudio.UpdateCueRotationSpeed(m_movingCue, ((m_rotatingSpeed - m_maxRotatingSpeedIdle) / (m_maxRotatingSpeedDrilling - m_maxRotatingSpeedIdle) * 100));
            MyAudio.UpdateCueRotationSpeed(m_movingCueRelease, ((m_rotatingSpeed - m_maxRotatingSpeedIdle) / (m_maxRotatingSpeedDrilling - m_maxRotatingSpeedIdle) * 100));
            MyAudio.UpdateCueRotationSpeed(m_idleCue, ((m_rotatingSpeed - m_maxRotatingSpeedIdle) / (m_maxRotatingSpeedDrilling - m_maxRotatingSpeedIdle) * 100));

            if (m_drillBits != null)
            {
                for (int i = 0; i < DRILL_BIT_COUNT; i++)
                {
                    m_drillBits[i].SetWorldMatrixForCockpit(ref m_worldMatrixForRenderingFromCockpitView);
                }
            }
        }