VirtualInput.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.CompilerServices;
  5. using System.Text;
  6. namespace BansheeEngine
  7. {
  8. public static class VirtualInput
  9. {
  10. public delegate void OnButtonEventDelegate(VirtualButton btn, int deviceIdx);
  11. public static event OnButtonEventDelegate OnButtonDown;
  12. public static event OnButtonEventDelegate OnButtonUp;
  13. public static event OnButtonEventDelegate OnButtonHeld;
  14. public static InputConfiguration KeyConfig
  15. {
  16. get
  17. {
  18. return Internal_GetKeyConfig();
  19. }
  20. set
  21. {
  22. Internal_SetKeyConfig(value);
  23. }
  24. }
  25. public static bool IsButtonDown(VirtualButton button, int deviceIdx = 0)
  26. {
  27. return Internal_IsButtonDown(button, deviceIdx);
  28. }
  29. public static bool IsButtonUp(VirtualButton button, int deviceIdx = 0)
  30. {
  31. return Internal_IsButtonUp(button, deviceIdx);
  32. }
  33. public static bool IsButtonHeld(VirtualButton button, int deviceIdx = 0)
  34. {
  35. return Internal_IsButtonHeld(button, deviceIdx);
  36. }
  37. public static float GetAxisValue(VirtualAxis axis, int deviceIdx = 0)
  38. {
  39. return Internal_GetAxisValue(axis, deviceIdx);
  40. }
  41. private static void Internal_TriggerButtonDown(VirtualButton button, int deviceIdx)
  42. {
  43. if (OnButtonDown != null)
  44. OnButtonDown(button, deviceIdx);
  45. }
  46. private static void Internal_TriggerButtonUp(VirtualButton button, int deviceIdx)
  47. {
  48. if (OnButtonUp != null)
  49. OnButtonUp(button, deviceIdx);
  50. }
  51. private static void Internal_TriggerButtonHeld(VirtualButton button, int deviceIdx)
  52. {
  53. if (OnButtonHeld != null)
  54. OnButtonHeld(button, deviceIdx);
  55. }
  56. [MethodImpl(MethodImplOptions.InternalCall)]
  57. private static extern InputConfiguration Internal_GetKeyConfig();
  58. [MethodImpl(MethodImplOptions.InternalCall)]
  59. private static extern void Internal_SetKeyConfig(InputConfiguration inputConfig);
  60. [MethodImpl(MethodImplOptions.InternalCall)]
  61. private static extern bool Internal_IsButtonDown(VirtualButton button, int deviceIdx);
  62. [MethodImpl(MethodImplOptions.InternalCall)]
  63. private static extern bool Internal_IsButtonUp(VirtualButton button, int deviceIdx);
  64. [MethodImpl(MethodImplOptions.InternalCall)]
  65. private static extern bool Internal_IsButtonHeld(VirtualButton button, int deviceIdx);
  66. [MethodImpl(MethodImplOptions.InternalCall)]
  67. private static extern float Internal_GetAxisValue(VirtualAxis button, int deviceIdx);
  68. };
  69. }