public void HandleInput(InputState inputState)
        {
            Vector3 newTrans = Vector3.Zero;
            Vector3 newRot = Vector3.Zero;
            bool shift = false;
            bool primaryFire = false;
            bool secondaryFire = false;
            foreach (KeyValuePair<Keys, UserControlKeys> pair in KeyMappings)
            {
                Keys key = pair.Key;
                if (inputState.IsKeyDown(key, playerIndex))
                {
                    UserControlKeys flyKey = pair.Value;
                    switch (flyKey)
                    {
                        case UserControlKeys.MoveFoward:
                            newTrans += Vector3.Forward;
                            break;
                        case UserControlKeys.MoveBackward:
                            newTrans += Vector3.Backward;
                            break;
                        case UserControlKeys.MoveRight:
                            newTrans += Vector3.Right;
                            break;
                        case UserControlKeys.MoveLeft:
                            newTrans += Vector3.Left;
                            break;
                        case UserControlKeys.MoveUp:
                            newTrans += Vector3.Up;
                            break;
                        case UserControlKeys.MoveDown:
                            newTrans += Vector3.Down;
                            break;
                        case UserControlKeys.TurnLeft:
                            newRot += Vector3.Up;
                            break;
                        case UserControlKeys.TurnRight:
                            newRot += Vector3.Down;
                            break;
                        case UserControlKeys.LookUp:
                            newRot += Vector3.Right;
                            break;
                        case UserControlKeys.LookDown:
                            newRot += Vector3.Left;
                            break;
                        case UserControlKeys.RollRight:
                            newRot += Vector3.Forward;
                            break;
                        case UserControlKeys.RollLeft:
                            newRot += Vector3.Backward;
                            break;
                        case UserControlKeys.Shifter:
                            shift = true;
                            break;
                        case UserControlKeys.PrimaryFire:
                            primaryFire = true;
                            break;
                        case UserControlKeys.SecondaryFire:
                            secondaryFire = true;
                            break;
                    }
                }
            }
            force = newTrans;
            if (force.Length() > 0)
            {
                force.Normalize();
                force *= shift ? ForceShiftMag : ForceMag;
            }

            torque = newRot;
            if (torque.Length() > 0)
            {
                torque.Normalize();
                torque *= shift ? TorqueShiftMag : TorqueMag;
            }
            PrimaryFire = primaryFire;
            SecondaryFire = secondaryFire;
        }