InputEvent.lua 4.8 KB

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