InputEvent.lua 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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 == "mousePosition" then
  18. retVal = Polycore.InputEvent_get_mousePosition(self.__ptr)
  19. if Polycore.__ptr_lookup[retVal] ~= nil then
  20. return Polycore.__ptr_lookup[retVal]
  21. else
  22. Polycore.__ptr_lookup[retVal] = Vector2("__skip_ptr__")
  23. Polycore.__ptr_lookup[retVal].__ptr = retVal
  24. return Polycore.__ptr_lookup[retVal]
  25. end
  26. elseif name == "key" then
  27. retVal = Polycore.InputEvent_get_key(self.__ptr)
  28. if Polycore.__ptr_lookup[retVal] ~= nil then
  29. return Polycore.__ptr_lookup[retVal]
  30. else
  31. Polycore.__ptr_lookup[retVal] = PolyKEY("__skip_ptr__")
  32. Polycore.__ptr_lookup[retVal].__ptr = retVal
  33. return Polycore.__ptr_lookup[retVal]
  34. end
  35. elseif name == "charCode" then
  36. retVal = Polycore.InputEvent_get_charCode(self.__ptr)
  37. if Polycore.__ptr_lookup[retVal] ~= nil then
  38. return Polycore.__ptr_lookup[retVal]
  39. else
  40. Polycore.__ptr_lookup[retVal] = wchar_t("__skip_ptr__")
  41. Polycore.__ptr_lookup[retVal].__ptr = retVal
  42. return Polycore.__ptr_lookup[retVal]
  43. end
  44. elseif name == "timestamp" then
  45. return Polycore.InputEvent_get_timestamp(self.__ptr)
  46. end
  47. end
  48. function InputEvent:__set_callback(name,value)
  49. if name == "mouseButton" then
  50. Polycore.InputEvent_set_mouseButton(self.__ptr, value)
  51. return true
  52. elseif name == "timestamp" then
  53. Polycore.InputEvent_set_timestamp(self.__ptr, value)
  54. return true
  55. end
  56. return false
  57. end
  58. function InputEvent:InputEvent(...)
  59. if type(arg[1]) == "table" and count(arg) == 1 then
  60. if ""..arg[1]:class() == "Event" then
  61. self.__ptr = arg[1].__ptr
  62. return
  63. end
  64. end
  65. for k,v in pairs(arg) do
  66. if type(v) == "table" then
  67. if v.__ptr ~= nil then
  68. arg[k] = v.__ptr
  69. end
  70. end
  71. end
  72. if self.__ptr == nil and arg[1] ~= "__skip_ptr__" then
  73. self.__ptr = Polycore.InputEvent(unpack(arg))
  74. Polycore.__ptr_lookup[self.__ptr] = self
  75. end
  76. end
  77. function InputEvent:getMousePosition()
  78. local retVal = Polycore.InputEvent_getMousePosition(self.__ptr)
  79. if retVal == nil then return nil end
  80. if Polycore.__ptr_lookup[retVal] ~= nil then
  81. return Polycore.__ptr_lookup[retVal]
  82. else
  83. Polycore.__ptr_lookup[retVal] = Vector2("__skip_ptr__")
  84. Polycore.__ptr_lookup[retVal].__ptr = retVal
  85. return Polycore.__ptr_lookup[retVal]
  86. end
  87. end
  88. function InputEvent:getKey()
  89. local retVal = Polycore.InputEvent_getKey(self.__ptr)
  90. if retVal == nil then return nil end
  91. if Polycore.__ptr_lookup[retVal] ~= nil then
  92. return Polycore.__ptr_lookup[retVal]
  93. else
  94. Polycore.__ptr_lookup[retVal] = PolyKEY("__skip_ptr__")
  95. Polycore.__ptr_lookup[retVal].__ptr = retVal
  96. return Polycore.__ptr_lookup[retVal]
  97. end
  98. end
  99. function InputEvent:getMouseButton()
  100. local retVal = Polycore.InputEvent_getMouseButton(self.__ptr)
  101. return retVal
  102. end
  103. function InputEvent:keyCode()
  104. local retVal = Polycore.InputEvent_keyCode(self.__ptr)
  105. return retVal
  106. end
  107. function InputEvent:__delete()
  108. Polycore.__ptr_lookup[self.__ptr] = nil
  109. Polycore.delete_InputEvent(self.__ptr)
  110. end