コード例 #1
0
 public static uint joyGetPosEx(int uJoyID, ref WinMMJoystick.JoyInfoEx pji);
コード例 #2
0
ファイル: WinMMJoystick.cs プロジェクト: tanis2000/FEZ
 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);
       }
 }
コード例 #3
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);
         }
     }
 }