Ejemplo n.º 1
0
 public void ProcessJoystickEvent(JoyAxisEvent ev)
 {
     int id = ev.Which;
     if (IsJoystickInstanceValid(id))
     {
         int index = sdl_instanceid_to_joysticks[id];
         JoystickDevice<Sdl2JoystickDetails> joystick = (JoystickDevice<Sdl2JoystickDetails>)joysticks[index];
         float value = ev.Value * RangeMultiplier;
         joystick.SetAxis(ev.Axis, value);
         joystick.Details.PacketNumber = Math.Max(0, unchecked(joystick.Details.PacketNumber + 1));
     }
     else
     {
         Debug.Print("[SDL2] Invalid joystick id {0} in {1}", id, ev.Type);
     }
 }
Ejemplo n.º 2
0
 public void Poll()
 {
     foreach (JoystickDevice <WinMMJoystick.WinMMJoyDetails> joystickDevice1 in this.sticks)
     {
         WinMMJoystick.JoyInfoEx pji = new WinMMJoystick.JoyInfoEx();
         pji.Size  = WinMMJoystick.JoyInfoEx.SizeInBytes;
         pji.Flags = WinMMJoystick.JoystickFlags.All;
         int num1  = (int)WinMMJoystick.UnsafeNativeMethods.joyGetPosEx(joystickDevice1.Id, ref pji);
         int count = joystickDevice1.Axis.Count;
         if ((joystickDevice1.Details.PovType & WinMMJoystick.PovType.Exists) != WinMMJoystick.PovType.None)
         {
             count -= 2;
         }
         int axis = 0;
         if (axis < count)
         {
             joystickDevice1.SetAxis((JoystickAxis)axis, joystickDevice1.Details.CalculateOffset((float)pji.XPos, axis));
             ++axis;
         }
         if (axis < count)
         {
             joystickDevice1.SetAxis((JoystickAxis)axis, joystickDevice1.Details.CalculateOffset((float)pji.YPos, axis));
             ++axis;
         }
         if (axis < count)
         {
             joystickDevice1.SetAxis((JoystickAxis)axis, joystickDevice1.Details.CalculateOffset((float)pji.ZPos, axis));
             ++axis;
         }
         if (axis < count)
         {
             joystickDevice1.SetAxis((JoystickAxis)axis, joystickDevice1.Details.CalculateOffset((float)pji.RPos, axis));
             ++axis;
         }
         if (axis < count)
         {
             joystickDevice1.SetAxis((JoystickAxis)axis, joystickDevice1.Details.CalculateOffset((float)pji.UPos, axis));
             ++axis;
         }
         if (axis < count)
         {
             joystickDevice1.SetAxis((JoystickAxis)axis, joystickDevice1.Details.CalculateOffset((float)pji.VPos, axis));
             ++axis;
         }
         if ((joystickDevice1.Details.PovType & WinMMJoystick.PovType.Exists) != WinMMJoystick.PovType.None)
         {
             float num2 = 0.0f;
             float num3 = 0.0f;
             if ((int)(ushort)pji.Pov != (int)ushort.MaxValue)
             {
                 if (pji.Pov > 27000 || pji.Pov < 9000)
                 {
                     num3 = 1f;
                 }
                 if (pji.Pov > 0 && pji.Pov < 18000)
                 {
                     num2 = 1f;
                 }
                 if (pji.Pov > 9000 && pji.Pov < 27000)
                 {
                     num3 = -1f;
                 }
                 if (pji.Pov > 18000)
                 {
                     num2 = -1f;
                 }
             }
             JoystickDevice <WinMMJoystick.WinMMJoyDetails> joystickDevice2 = joystickDevice1;
             int    num4 = axis;
             int    num5 = 1;
             int    num6 = num4 + num5;
             double num7 = (double)num2;
             joystickDevice2.SetAxis((JoystickAxis)num4, (float)num7);
             JoystickDevice <WinMMJoystick.WinMMJoyDetails> joystickDevice3 = joystickDevice1;
             int    num8  = num6;
             int    num9  = 1;
             int    num10 = num8 + num9;
             double num11 = (double)num3;
             joystickDevice3.SetAxis((JoystickAxis)num8, (float)num11);
         }
         for (int index = 0; index < joystickDevice1.Button.Count; ++index)
         {
             joystickDevice1.SetButton((JoystickButton)index, ((long)pji.Buttons & (long)(1 << index)) != 0L);
         }
     }
 }