Exemple #1
0
        private void gyroRotatingTransform()
        {
            // make the gyro turn around itself
            m_rotatingAngle += m_rotatingSpeed;
            GL.glTranslatef(CubeWidth / 2.0f, 0.0f, CubeDepth / 2.0f);
            GL.glRotatef(m_rotatingAngle, 0.0f, -1.0f, 0.0f);
            GL.glTranslatef(-CubeWidth / 2.0f, 0.0f, -CubeDepth / 2.0f);

            // the gyro loose power
            GL.glRotatef(m_fallingAngle, 1.0f, 0.0f, 0.0f);
            m_rotatingSpeed -= m_rotatingSlowFactor;
            m_fallingAngle  += m_fallingFactor;

            if (m_fallingAngle >= 45)
            {
                m_yAxisFellAngle = m_rotatingAngle % 360.0f;
                m_xAxisFellAngle = m_fallingAngle % 360.0f;
                m_gyroState      = eGyroState.Slowing;
            }
        }
Exemple #2
0
        private void gyroSlowingTransform()
        {
            // calc slowing angle
            m_slowingAngle += m_slowingSpeed;

            // set the gyro last position with swinging angle
            GL.glTranslatef(CubeWidth / 2.0f, 0.0f, CubeDepth / 2.0f);
            GL.glRotatef(m_yAxisFellAngle + m_slowingAngle, 0.0f, -1.0f, 0.0f);
            GL.glTranslatef(-CubeWidth / 2.0f, 0.0f, -CubeDepth / 2.0f);
            GL.glRotatef(m_xAxisFellAngle, 1.0f, 0.0f, 0.0f);

            m_slowingSpeed -= m_slowingSlowFactor; // slow down is linear

            if (m_slowingSpeed < m_startStopingSpeed)
            {
                m_startedStopingAngle = m_slowingAngle;
                m_stopingAngle        = m_slowingAngle;
                m_stopingSpeed        = m_slowingSpeed;
                m_gyroState           = eGyroState.Stoping;
            }
        }