InputEvent.lua 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. require "Polycode/Event"
  2. class "InputEvent" (Event)
  3. InputEvent.EVENTBASE_INPUTEVENT = 0x400
  4. InputEvent.EVENT_MOUSEDOWN = InputEvent.EVENTBASE_INPUTEVENT + 0
  5. InputEvent.EVENT_MOUSEUP = InputEvent.EVENTBASE_INPUTEVENT + 1
  6. InputEvent.EVENT_MOUSEMOVE = InputEvent.EVENTBASE_INPUTEVENT + 2
  7. InputEvent.EVENT_MOUSEOVER = InputEvent.EVENTBASE_INPUTEVENT + 3
  8. InputEvent.EVENT_MOUSEOUT = InputEvent.EVENTBASE_INPUTEVENT + 4
  9. InputEvent.EVENT_DOUBLECLICK = InputEvent.EVENTBASE_INPUTEVENT + 5
  10. InputEvent.EVENT_MOUSEUP_OUTSIDE = InputEvent.EVENTBASE_INPUTEVENT + 6
  11. InputEvent.EVENT_MOUSEWHEEL_UP = InputEvent.EVENTBASE_INPUTEVENT + 7
  12. InputEvent.EVENT_MOUSEWHEEL_DOWN = InputEvent.EVENTBASE_INPUTEVENT + 8
  13. InputEvent.EVENT_KEYDOWN = InputEvent.EVENTBASE_INPUTEVENT + 13
  14. InputEvent.EVENT_KEYUP = InputEvent.EVENTBASE_INPUTEVENT + 14
  15. InputEvent.EVENT_JOYBUTTON_DOWN = InputEvent.EVENTBASE_INPUTEVENT + 15
  16. InputEvent.EVENT_JOYBUTTON_UP = InputEvent.EVENTBASE_INPUTEVENT + 16
  17. InputEvent.EVENT_JOYAXIS_MOVED = InputEvent.EVENTBASE_INPUTEVENT + 17
  18. InputEvent.EVENT_JOYDEVICE_ATTACHED = InputEvent.EVENTBASE_INPUTEVENT + 18
  19. InputEvent.EVENT_JOYDEVICE_DETACHED = InputEvent.EVENTBASE_INPUTEVENT + 19
  20. InputEvent.EVENT_TOUCHES_BEGAN = InputEvent.EVENTBASE_INPUTEVENT + 20
  21. InputEvent.EVENT_TOUCHES_MOVED = InputEvent.EVENTBASE_INPUTEVENT + 21
  22. InputEvent.EVENT_TOUCHES_ENDED = InputEvent.EVENTBASE_INPUTEVENT + 22
  23. function InputEvent:__getvar(name)
  24. if name == "mouseButton" then
  25. return Polycore.InputEvent_get_mouseButton(self.__ptr)
  26. elseif name == "mousePosition" then
  27. local retVal = Polycore.InputEvent_get_mousePosition(self.__ptr)
  28. if retVal == nil then return nil end
  29. local __c = _G["Vector2"]("__skip_ptr__")
  30. __c.__ptr = retVal
  31. return __c
  32. elseif name == "key" then
  33. return Polycore.InputEvent_get_key(self.__ptr)
  34. elseif name == "charCode" then
  35. local retVal = Polycore.InputEvent_get_charCode(self.__ptr)
  36. if retVal == nil then return nil end
  37. local __c = _G["wchar_t"]("__skip_ptr__")
  38. __c.__ptr = retVal
  39. return __c
  40. elseif name == "timestamp" then
  41. return Polycore.InputEvent_get_timestamp(self.__ptr)
  42. elseif name == "touch" then
  43. local retVal = Polycore.InputEvent_get_touch(self.__ptr)
  44. if retVal == nil then return nil end
  45. local __c = _G["TouchInfo"]("__skip_ptr__")
  46. __c.__ptr = retVal
  47. return __c
  48. elseif name == "touchType" then
  49. return Polycore.InputEvent_get_touchType(self.__ptr)
  50. elseif name == "joystickDeviceID" then
  51. return Polycore.InputEvent_get_joystickDeviceID(self.__ptr)
  52. elseif name == "joystickAxisValue" then
  53. return Polycore.InputEvent_get_joystickAxisValue(self.__ptr)
  54. elseif name == "joystickButton" then
  55. return Polycore.InputEvent_get_joystickButton(self.__ptr)
  56. elseif name == "joystickAxis" then
  57. return Polycore.InputEvent_get_joystickAxis(self.__ptr)
  58. elseif name == "joystickIndex" then
  59. return Polycore.InputEvent_get_joystickIndex(self.__ptr)
  60. elseif name == "hitDistance" then
  61. return Polycore.InputEvent_get_hitDistance(self.__ptr)
  62. end
  63. if Event["__getvar"] ~= nil then
  64. return Event.__getvar(self, name)
  65. end
  66. end
  67. function InputEvent:__setvar(name,value)
  68. if name == "mouseButton" then
  69. Polycore.InputEvent_set_mouseButton(self.__ptr, value)
  70. return true
  71. elseif name == "mousePosition" then
  72. Polycore.InputEvent_set_mousePosition(self.__ptr, value.__ptr)
  73. return true
  74. elseif name == "key" then
  75. Polycore.InputEvent_set_key(self.__ptr, value)
  76. return true
  77. elseif name == "charCode" then
  78. Polycore.InputEvent_set_charCode(self.__ptr, value.__ptr)
  79. return true
  80. elseif name == "timestamp" then
  81. Polycore.InputEvent_set_timestamp(self.__ptr, value)
  82. return true
  83. elseif name == "touch" then
  84. Polycore.InputEvent_set_touch(self.__ptr, value.__ptr)
  85. return true
  86. elseif name == "touchType" then
  87. Polycore.InputEvent_set_touchType(self.__ptr, value)
  88. return true
  89. elseif name == "joystickDeviceID" then
  90. Polycore.InputEvent_set_joystickDeviceID(self.__ptr, value)
  91. return true
  92. elseif name == "joystickAxisValue" then
  93. Polycore.InputEvent_set_joystickAxisValue(self.__ptr, value)
  94. return true
  95. elseif name == "joystickButton" then
  96. Polycore.InputEvent_set_joystickButton(self.__ptr, value)
  97. return true
  98. elseif name == "joystickAxis" then
  99. Polycore.InputEvent_set_joystickAxis(self.__ptr, value)
  100. return true
  101. elseif name == "joystickIndex" then
  102. Polycore.InputEvent_set_joystickIndex(self.__ptr, value)
  103. return true
  104. elseif name == "hitDistance" then
  105. Polycore.InputEvent_set_hitDistance(self.__ptr, value)
  106. return true
  107. end
  108. if Event["__setvar"] ~= nil then
  109. return Event.__setvar(self, name, value)
  110. else
  111. return false
  112. end
  113. end
  114. function InputEvent:InputEvent(...)
  115. local arg = {...}
  116. if type(arg[1]) == "table" and count(arg) == 1 then
  117. if ""..arg[1].__classname == "Event" then
  118. self.__ptr = arg[1].__ptr
  119. return
  120. end
  121. end
  122. for k,v in pairs(arg) do
  123. if type(v) == "table" then
  124. if v.__ptr ~= nil then
  125. arg[k] = v.__ptr
  126. end
  127. end
  128. end
  129. if self.__ptr == nil and arg[1] ~= "__skip_ptr__" then
  130. self.__ptr = Polycore.InputEvent(unpack(arg))
  131. end
  132. end
  133. function InputEvent:getMousePosition()
  134. local retVal = Polycore.InputEvent_getMousePosition(self.__ptr)
  135. if retVal == nil then return nil end
  136. local __c = _G["Vector2"]("__skip_ptr__")
  137. __c.__ptr = retVal
  138. return __c
  139. end
  140. function InputEvent:getKey()
  141. local retVal = Polycore.InputEvent_getKey(self.__ptr)
  142. return retVal
  143. end
  144. function InputEvent:getMouseButton()
  145. local retVal = Polycore.InputEvent_getMouseButton(self.__ptr)
  146. return retVal
  147. end
  148. function InputEvent:getCharCode()
  149. local retVal = Polycore.InputEvent_getCharCode(self.__ptr)
  150. return retVal
  151. end
  152. function InputEvent:keyCode()
  153. local retVal = Polycore.InputEvent_keyCode(self.__ptr)
  154. return retVal
  155. end
  156. function InputEvent:__delete()
  157. if self then Polycore.delete_InputEvent(self.__ptr) end
  158. end