InputEvent.lua 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. function InputEvent:__index__(name)
  15. if name == "mouseButton" then
  16. return Polycore.InputEvent_get_mouseButton(self.__ptr)
  17. elseif name == "timestamp" then
  18. return Polycore.InputEvent_get_timestamp(self.__ptr)
  19. end
  20. end
  21. function InputEvent:__set_callback(name,value)
  22. if name == "mouseButton" then
  23. Polycore.InputEvent_set_mouseButton(self.__ptr, value)
  24. return true
  25. elseif name == "timestamp" then
  26. Polycore.InputEvent_set_timestamp(self.__ptr, value)
  27. return true
  28. end
  29. return false
  30. end
  31. function InputEvent:InputEvent(...)
  32. if type(arg[1]) == "table" and count(arg) == 1 then
  33. if ""..arg[1]:class() == "Event" then
  34. self.__ptr = arg[1].__ptr
  35. return
  36. end
  37. end
  38. for k,v in pairs(arg) do
  39. if type(v) == "table" then
  40. if v.__ptr ~= nil then
  41. arg[k] = v.__ptr
  42. end
  43. end
  44. end
  45. if self.__ptr == nil and arg[1] ~= "__skip_ptr__" then
  46. self.__ptr = Polycore.InputEvent(unpack(arg))
  47. Polycore.__ptr_lookup[self.__ptr] = self
  48. end
  49. end
  50. function InputEvent:getMousePosition()
  51. local retVal = Polycore.InputEvent_getMousePosition(self.__ptr)
  52. if Polycore.__ptr_lookup[retVal] ~= nil then
  53. return Polycore.__ptr_lookup[retVal]
  54. else
  55. Polycore.__ptr_lookup[retVal] = Vector2("__skip_ptr__")
  56. Polycore.__ptr_lookup[retVal].__ptr = retVal
  57. return Polycore.__ptr_lookup[retVal]
  58. end
  59. end
  60. function InputEvent:getKey()
  61. local retVal = Polycore.InputEvent_getKey(self.__ptr)
  62. if Polycore.__ptr_lookup[retVal] ~= nil then
  63. return Polycore.__ptr_lookup[retVal]
  64. else
  65. Polycore.__ptr_lookup[retVal] = PolyKEY("__skip_ptr__")
  66. Polycore.__ptr_lookup[retVal].__ptr = retVal
  67. return Polycore.__ptr_lookup[retVal]
  68. end
  69. end
  70. function InputEvent:getMouseButton()
  71. local retVal = Polycore.InputEvent_getMouseButton(self.__ptr)
  72. return retVal
  73. end
  74. function InputEvent:keyCode()
  75. local retVal = Polycore.InputEvent_keyCode(self.__ptr)
  76. return retVal
  77. end
  78. function InputEvent:__delete()
  79. Polycore.__ptr_lookup[self.__ptr] = nil
  80. Polycore.delete_InputEvent(self.__ptr)
  81. end