Ejemplo n.º 1
0
        private static void SetGyroParams(GyroDefinition gyroDef, bool GyroOverride = false, float pitchValue = 0f, float yawValue = 0f, float rollValue = 0f)
        {
            IMyGyro gyro = gyroDef.Gyro;

            gyro.GyroOverride = GyroOverride;
            switch (gyroDef.Pitch)
            {
            case GyroRotations.Pitch:
                gyro.Pitch = pitchValue * gyroDef.PitchFactor;
                break;

            case GyroRotations.Yaw:
                gyro.Yaw = pitchValue * gyroDef.PitchFactor;
                break;

            default:        //roll
                gyro.Roll = pitchValue * gyroDef.PitchFactor;
                break;
            }
            switch (gyroDef.Yaw)
            {
            case GyroRotations.Pitch:
                gyro.Pitch = yawValue * gyroDef.YawFactor;
                break;

            case GyroRotations.Yaw:
                gyro.Yaw = yawValue * gyroDef.YawFactor;
                break;

            default:        //roll
                gyro.Roll = yawValue * gyroDef.YawFactor;
                break;
            }
            switch (gyroDef.Roll)
            {
            case GyroRotations.Pitch:
                gyro.Pitch = rollValue * gyroDef.RollFactor;
                break;

            case GyroRotations.Yaw:
                gyro.Yaw = rollValue * gyroDef.RollFactor;
                break;

            default:        //roll
                gyro.Roll = rollValue * gyroDef.RollFactor;
                break;
            }
        }
Ejemplo n.º 2
0
        private static void SetupGyros(IMyShipController OrientationCockpit, List <IMyGyro> GyrosList, List <GyroDefinition> GyroDefsList)
        {
            Matrix cockpitMatrix, orientMatrix;

            OrientationCockpit.Orientation.GetMatrix(out cockpitMatrix);

            GyroDefinition GyroDef;

            foreach (IMyGyro gyro in GyrosList)
            {
                gyro.Orientation.GetMatrix(out orientMatrix);
                GyroDef = new GyroDefinition(gyro);

                if (orientMatrix.Forward == cockpitMatrix.Forward)
                {
                    GyroDef.Roll       = GyroRotations.Roll;
                    GyroDef.RollFactor = 1f;

                    if (orientMatrix.Up == cockpitMatrix.Up)
                    {
                        GyroDef.Pitch       = GyroRotations.Pitch;
                        GyroDef.PitchFactor = 1f;

                        GyroDef.Yaw       = GyroRotations.Yaw;
                        GyroDef.YawFactor = 1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Right)
                    {
                        GyroDef.Pitch       = GyroRotations.Yaw;
                        GyroDef.PitchFactor = 1f;

                        GyroDef.Yaw       = GyroRotations.Pitch;
                        GyroDef.YawFactor = -1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Down)
                    {
                        GyroDef.Pitch       = GyroRotations.Pitch;
                        GyroDef.PitchFactor = -1f;

                        GyroDef.Yaw       = GyroRotations.Yaw;
                        GyroDef.YawFactor = -1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Left)
                    {
                        GyroDef.Pitch       = GyroRotations.Yaw;
                        GyroDef.PitchFactor = -1f;

                        GyroDef.Yaw       = GyroRotations.Pitch;
                        GyroDef.YawFactor = 1f;
                    }
                }
                else if (orientMatrix.Forward == cockpitMatrix.Down)
                {
                    GyroDef.Yaw       = GyroRotations.Roll;
                    GyroDef.YawFactor = 1f;

                    if (orientMatrix.Up == cockpitMatrix.Forward)
                    {
                        GyroDef.Pitch       = GyroRotations.Pitch;
                        GyroDef.PitchFactor = 1f;

                        GyroDef.Roll       = GyroRotations.Yaw;
                        GyroDef.RollFactor = -1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Right)
                    {
                        GyroDef.Pitch       = GyroRotations.Yaw;
                        GyroDef.PitchFactor = 1f;

                        GyroDef.Roll       = GyroRotations.Pitch;
                        GyroDef.RollFactor = 1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Backward)
                    {
                        GyroDef.Pitch       = GyroRotations.Pitch;
                        GyroDef.PitchFactor = -1f;

                        GyroDef.Roll       = GyroRotations.Yaw;
                        GyroDef.RollFactor = 1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Left)
                    {
                        GyroDef.Pitch       = GyroRotations.Yaw;
                        GyroDef.PitchFactor = -1f;

                        GyroDef.Roll       = GyroRotations.Pitch;
                        GyroDef.RollFactor = -1f;
                    }
                }
                else if (orientMatrix.Forward == cockpitMatrix.Backward)
                {
                    GyroDef.Roll       = GyroRotations.Roll;
                    GyroDef.RollFactor = -1f;

                    if (orientMatrix.Up == cockpitMatrix.Up)
                    {
                        GyroDef.Pitch       = GyroRotations.Pitch;
                        GyroDef.PitchFactor = -1f;

                        GyroDef.Yaw       = GyroRotations.Yaw;
                        GyroDef.YawFactor = 1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Right)
                    {
                        GyroDef.Pitch       = GyroRotations.Yaw;
                        GyroDef.PitchFactor = 1f;

                        GyroDef.Yaw       = GyroRotations.Pitch;
                        GyroDef.YawFactor = 1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Down)
                    {
                        GyroDef.Pitch       = GyroRotations.Pitch;
                        GyroDef.PitchFactor = 1f;

                        GyroDef.Yaw       = GyroRotations.Yaw;
                        GyroDef.YawFactor = -1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Left)
                    {
                        GyroDef.Pitch       = GyroRotations.Yaw;
                        GyroDef.PitchFactor = -1f;

                        GyroDef.Yaw       = GyroRotations.Pitch;
                        GyroDef.YawFactor = -1f;
                    }
                }
                else if (orientMatrix.Forward == cockpitMatrix.Up)
                {
                    GyroDef.Yaw       = GyroRotations.Roll;
                    GyroDef.YawFactor = -1f;

                    if (orientMatrix.Up == cockpitMatrix.Forward)
                    {
                        GyroDef.Pitch       = GyroRotations.Pitch;
                        GyroDef.PitchFactor = -1f;

                        GyroDef.Roll       = GyroRotations.Yaw;
                        GyroDef.RollFactor = -1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Right)
                    {
                        GyroDef.Pitch       = GyroRotations.Yaw;
                        GyroDef.PitchFactor = 1f;

                        GyroDef.Roll       = GyroRotations.Pitch;
                        GyroDef.RollFactor = -1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Backward)
                    {
                        GyroDef.Pitch       = GyroRotations.Pitch;
                        GyroDef.PitchFactor = 1f;

                        GyroDef.Roll       = GyroRotations.Yaw;
                        GyroDef.RollFactor = 1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Left)
                    {
                        GyroDef.Pitch       = GyroRotations.Yaw;
                        GyroDef.PitchFactor = -1f;

                        GyroDef.Roll       = GyroRotations.Pitch;
                        GyroDef.RollFactor = 1f;
                    }
                }
                else if (orientMatrix.Forward == cockpitMatrix.Right)
                {
                    GyroDef.Pitch       = GyroRotations.Roll;
                    GyroDef.PitchFactor = -1f;

                    if (orientMatrix.Up == cockpitMatrix.Up)
                    {
                        GyroDef.Yaw       = GyroRotations.Yaw;
                        GyroDef.YawFactor = 1f;

                        GyroDef.Roll       = GyroRotations.Pitch;
                        GyroDef.RollFactor = 1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Forward)
                    {
                        GyroDef.Yaw       = GyroRotations.Pitch;
                        GyroDef.YawFactor = 1f;

                        GyroDef.Roll       = GyroRotations.Yaw;
                        GyroDef.RollFactor = -1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Down)
                    {
                        GyroDef.Yaw       = GyroRotations.Yaw;
                        GyroDef.YawFactor = -1f;

                        GyroDef.Roll       = GyroRotations.Pitch;
                        GyroDef.RollFactor = -1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Backward)
                    {
                        GyroDef.Yaw       = GyroRotations.Pitch;
                        GyroDef.YawFactor = -1f;

                        GyroDef.Roll       = GyroRotations.Yaw;
                        GyroDef.RollFactor = 1f;
                    }
                }
                else if (orientMatrix.Forward == cockpitMatrix.Left)
                {
                    GyroDef.Pitch       = GyroRotations.Roll;
                    GyroDef.PitchFactor = 1f;

                    if (orientMatrix.Up == cockpitMatrix.Up)
                    {
                        GyroDef.Yaw       = GyroRotations.Yaw;
                        GyroDef.YawFactor = 1f;

                        GyroDef.Roll       = GyroRotations.Pitch;
                        GyroDef.RollFactor = -1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Forward)
                    {
                        GyroDef.Yaw       = GyroRotations.Pitch;
                        GyroDef.YawFactor = -1f;

                        GyroDef.Roll       = GyroRotations.Yaw;
                        GyroDef.RollFactor = -1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Down)
                    {
                        GyroDef.Yaw       = GyroRotations.Yaw;
                        GyroDef.YawFactor = -1f;

                        GyroDef.Roll       = GyroRotations.Pitch;
                        GyroDef.RollFactor = 1f;
                    }
                    else if (orientMatrix.Up == cockpitMatrix.Backward)
                    {
                        GyroDef.Yaw       = GyroRotations.Pitch;
                        GyroDef.YawFactor = 1f;

                        GyroDef.Roll       = GyroRotations.Yaw;
                        GyroDef.RollFactor = 1f;
                    }
                }

                GyroDefsList.Add(GyroDef);
            }
        }