public void TestGamePadStateConversion() {
      requireAttachedJoystick();

      var converter = new DirectInputConverter(this.joystick);

      JoystickState joystickState = this.joystick.GetCurrentState();
      converter.Convert(ref joystickState);
    }
Example #2
0
        public void TestExtendedGamePadStateConversion()
        {
            requireAttachedJoystick();

            var converter = new DirectInputConverter(this.joystick);

            JoystickState joystickState = this.joystick.GetCurrentState();
            var           gamePadState  = new ExtendedGamePadState(converter, ref joystickState);
        }
        /// <summary>Initializes a new DirectInput-based game pad</summary>
        /// <param name="joystick">The DirectInput joystick this instance will query</param>
        /// <param name="checkAttachedDelegate">
        ///   Delegate through which the instance can check if the device is attached
        /// </param>
        public DirectInputGamePad(
      Joystick joystick, CheckAttachedDelegate checkAttachedDelegate
    )
        {
            this.joystick = joystick;
              this.checkAttachedDelegate = checkAttachedDelegate;
              this.states = new LeakyQueue<JoystickState>();
              this.converter = new DirectInputConverter(this.joystick);

              // Ensure the leaky queue has created its array
              ensureSlotAvailable();
        }
Example #4
0
        /// <summary>
        ///   Initializes a new extended game pad state from a DirectInput joystick state
        /// </summary>
        /// <param name="converter">DirectInput converter used to fill the state</param>
        /// <param name="joystickState">
        ///   Joystick state from which the extended game pad state will be built
        /// </param>
        internal ExtendedGamePadState(
            DirectInputConverter converter, ref JoystickState joystickState
            )
        {
            // Take over the joystick's axes
            {
                this.AvailableAxes = converter.AvailableAxes;
                DirectInputConverter.IAxisReader[] axisReaders = converter.AxisReaders;

                if (axisReaders[0] != null)
                {
                    this.X = axisReaders[0].GetValue(ref joystickState);
                }
                else
                {
                    this.X = 0.0f;
                }
                if (axisReaders[1] != null)
                {
                    this.Y = -axisReaders[1].GetValue(ref joystickState);
                }
                else
                {
                    this.Y = 0.0f;
                }
                if (axisReaders[2] != null)
                {
                    this.Z = axisReaders[2].GetValue(ref joystickState);
                }
                else
                {
                    this.Z = 0.0f;
                }

                if (axisReaders[3] != null)
                {
                    this.VelocityX = axisReaders[3].GetValue(ref joystickState);
                }
                else
                {
                    this.VelocityX = 0.0f;
                }
                if (axisReaders[4] != null)
                {
                    this.VelocityY = -axisReaders[4].GetValue(ref joystickState);
                }
                else
                {
                    this.VelocityY = 0.0f;
                }
                if (axisReaders[5] != null)
                {
                    this.VelocityZ = axisReaders[5].GetValue(ref joystickState);
                }
                else
                {
                    this.VelocityZ = 0.0f;
                }

                if (axisReaders[6] != null)
                {
                    this.AccelerationX = axisReaders[6].GetValue(ref joystickState);
                }
                else
                {
                    this.AccelerationX = 0.0f;
                }
                if (axisReaders[7] != null)
                {
                    this.AccelerationY = -axisReaders[7].GetValue(ref joystickState);
                }
                else
                {
                    this.AccelerationY = 0.0f;
                }
                if (axisReaders[8] != null)
                {
                    this.AccelerationZ = axisReaders[8].GetValue(ref joystickState);
                }
                else
                {
                    this.AccelerationZ = 0.0f;
                }

                if (axisReaders[9] != null)
                {
                    this.ForceX = axisReaders[9].GetValue(ref joystickState);
                }
                else
                {
                    this.ForceX = 0.0f;
                }
                if (axisReaders[10] != null)
                {
                    this.ForceY = -axisReaders[10].GetValue(ref joystickState);
                }
                else
                {
                    this.ForceY = 0.0f;
                }
                if (axisReaders[11] != null)
                {
                    this.ForceZ = axisReaders[11].GetValue(ref joystickState);
                }
                else
                {
                    this.ForceZ = 0.0f;
                }

                if (axisReaders[12] != null)
                {
                    this.RotationX = axisReaders[12].GetValue(ref joystickState);
                }
                else
                {
                    this.RotationX = 0.0f;
                }
                if (axisReaders[13] != null)
                {
                    this.RotationY = -axisReaders[13].GetValue(ref joystickState);
                }
                else
                {
                    this.RotationY = 0.0f;
                }
                if (axisReaders[14] != null)
                {
                    this.RotationZ = axisReaders[14].GetValue(ref joystickState);
                }
                else
                {
                    this.RotationZ = 0.0f;
                }

                if (axisReaders[15] != null)
                {
                    this.AngularVelocityX = axisReaders[15].GetValue(ref joystickState);
                }
                else
                {
                    this.AngularVelocityX = 0.0f;
                }
                if (axisReaders[16] != null)
                {
                    this.AngularVelocityY = -axisReaders[16].GetValue(ref joystickState);
                }
                else
                {
                    this.AngularVelocityY = 0.0f;
                }
                if (axisReaders[17] != null)
                {
                    this.AngularVelocityZ = axisReaders[17].GetValue(ref joystickState);
                }
                else
                {
                    this.AngularVelocityZ = 0.0f;
                }

                if (axisReaders[18] != null)
                {
                    this.AngularAccelerationX = axisReaders[18].GetValue(ref joystickState);
                }
                else
                {
                    this.AngularAccelerationX = 0.0f;
                }
                if (axisReaders[19] != null)
                {
                    this.AngularAccelerationY = -axisReaders[19].GetValue(ref joystickState);
                }
                else
                {
                    this.AngularAccelerationY = 0.0f;
                }
                if (axisReaders[20] != null)
                {
                    this.AngularAccelerationZ = axisReaders[20].GetValue(ref joystickState);
                }
                else
                {
                    this.AngularAccelerationZ = 0.0f;
                }

                if (axisReaders[21] != null)
                {
                    this.TorqueX = axisReaders[21].GetValue(ref joystickState);
                }
                else
                {
                    this.TorqueX = 0.0f;
                }
                if (axisReaders[22] != null)
                {
                    this.TorqueY = -axisReaders[22].GetValue(ref joystickState);
                }
                else
                {
                    this.TorqueY = 0.0f;
                }
                if (axisReaders[23] != null)
                {
                    this.TorqueZ = axisReaders[23].GetValue(ref joystickState);
                }
                else
                {
                    this.TorqueZ = 0.0f;
                }
            }

            // Take over the joystick's buttons
            {
                this.ButtonCount = converter.ButtonCount;
                bool[] buttonPressed = joystickState.GetButtons();

                this.buttonState1 = 0;
                for (int index = 0; index < Math.Min(64, ButtonCount); ++index)
                {
                    if (buttonPressed[index])
                    {
                        this.buttonState1 |= (1UL << index);
                    }
                }

                this.buttonState2 = 0;
                for (int index = 0; index < (ButtonCount - 64); ++index)
                {
                    if (buttonPressed[index + 64])
                    {
                        this.buttonState2 |= (1UL << index);
                    }
                }
            }

            // Take over the joystick's sliders
            {
                this.AvailableSliders = converter.AvailableSliders;
                DirectInputConverter.ISliderReader[] sliderReaders = converter.SliderReaders;

                if (sliderReaders[0] != null)
                {
                    this.Slider1 = sliderReaders[0].GetValue(ref joystickState);
                }
                else
                {
                    this.Slider1 = 0.0f;
                }
                if (sliderReaders[1] != null)
                {
                    this.Slider2 = sliderReaders[1].GetValue(ref joystickState);
                }
                else
                {
                    this.Slider2 = 0.0f;
                }

                if (sliderReaders[2] != null)
                {
                    this.VelocitySlider1 = sliderReaders[2].GetValue(ref joystickState);
                }
                else
                {
                    this.VelocitySlider1 = 0.0f;
                }
                if (sliderReaders[3] != null)
                {
                    this.VelocitySlider2 = sliderReaders[3].GetValue(ref joystickState);
                }
                else
                {
                    this.VelocitySlider2 = 0.0f;
                }

                if (sliderReaders[4] != null)
                {
                    this.AccelerationSlider1 = sliderReaders[4].GetValue(ref joystickState);
                }
                else
                {
                    this.AccelerationSlider1 = 0.0f;
                }
                if (sliderReaders[5] != null)
                {
                    this.AccelerationSlider2 = sliderReaders[5].GetValue(ref joystickState);
                }
                else
                {
                    this.AccelerationSlider2 = 0.0f;
                }

                if (sliderReaders[6] != null)
                {
                    this.ForceSlider1 = sliderReaders[6].GetValue(ref joystickState);
                }
                else
                {
                    this.ForceSlider1 = 0.0f;
                }
                if (sliderReaders[7] != null)
                {
                    this.ForceSlider2 = sliderReaders[7].GetValue(ref joystickState);
                }
                else
                {
                    this.ForceSlider2 = 0.0f;
                }
            }

            // Take over the joystick's Point-of-View controllers
            {
                this.PovCount = converter.PovCount;

                int[] povs = null;
                if (this.PovCount >= 1)
                {
                    povs      = joystickState.GetPointOfViewControllers();
                    this.Pov1 = povs[0];
                }
                else
                {
                    this.Pov1 = -1;
                }
                if (this.PovCount >= 2)
                {
                    this.Pov2 = povs[1];
                }
                else
                {
                    this.Pov2 = -1;
                }
                if (this.PovCount >= 3)
                {
                    this.Pov3 = povs[2];
                }
                else
                {
                    this.Pov3 = -1;
                }
                if (this.PovCount >= 4)
                {
                    this.Pov4 = povs[3];
                }
                else
                {
                    this.Pov4 = -1;
                }
            }
        }
    public void TestConstructor() {
      requireAttachedJoystick();

      var converter = new DirectInputConverter(this.joystick);
    }
Example #6
0
        public void TestConstructor()
        {
            requireAttachedJoystick();

            var converter = new DirectInputConverter(this.joystick);
        }