PolyCoreInput.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. * PolyCoreInput.cpp
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 3/27/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. #include "PolyCoreInput.h"
  10. namespace Polycode {
  11. CoreInput::CoreInput() : EventDispatcher() {
  12. mouseButtons[0] = false;
  13. mouseButtons[1] = false;
  14. mouseButtons[2] = false;
  15. for(int i=0; i < 512; i++) {
  16. keyboardState[i] = 0;
  17. }
  18. }
  19. CoreInput::~CoreInput() {
  20. }
  21. bool CoreInput::getMouseButtonState(int mouseButton) {
  22. return mouseButtons[mouseButton];
  23. }
  24. void CoreInput::setMouseButtonState(int mouseButton, bool state, int ticks) {
  25. InputEvent *evt = new InputEvent(mousePosition, ticks);
  26. evt->mouseButton = mouseButton;
  27. if(state)
  28. dispatchEvent(evt, InputEvent::EVENT_MOUSEDOWN);
  29. else
  30. dispatchEvent(evt, InputEvent::EVENT_MOUSEUP);
  31. mouseButtons[mouseButton] = state;
  32. }
  33. void CoreInput::mouseWheelDown(int ticks) {
  34. InputEvent *evt = new InputEvent(mousePosition, ticks);
  35. dispatchEvent(evt, InputEvent::EVENT_MOUSEWHEEL_DOWN);
  36. }
  37. void CoreInput::mouseWheelUp(int ticks) {
  38. InputEvent *evt = new InputEvent(mousePosition, ticks);
  39. dispatchEvent(evt, InputEvent::EVENT_MOUSEWHEEL_UP);
  40. }
  41. void CoreInput::setMousePosition(int x, int y, int ticks) {
  42. mousePosition.x = x;
  43. mousePosition.y = y;
  44. InputEvent *evt = new InputEvent(mousePosition, ticks);
  45. dispatchEvent(evt, InputEvent::EVENT_MOUSEMOVE);
  46. }
  47. Vector2 CoreInput::getMouseDelta() {
  48. return deltaMousePosition;
  49. }
  50. void CoreInput::setDeltaPosition(int x, int y) {
  51. deltaMousePosition.x = (Number)x;
  52. deltaMousePosition.y = (Number)y;
  53. }
  54. Vector2 CoreInput::getMousePosition() {
  55. return mousePosition;
  56. }
  57. bool CoreInput::getKeyState(TAUKey keyCode) {
  58. if(keyCode < 512)
  59. return keyboardState[keyCode];
  60. else
  61. return false;
  62. }
  63. void CoreInput::setKeyState(TAUKey keyCode, wchar_t code, bool newState, int ticks) {
  64. InputEvent *evt = new InputEvent(keyCode, code, ticks);
  65. if(keyCode < 512)
  66. keyboardState[keyCode] = newState;
  67. if(newState) {
  68. dispatchEvent(evt, InputEvent::EVENT_KEYDOWN);
  69. } else {
  70. dispatchEvent(evt, InputEvent::EVENT_KEYUP);
  71. }
  72. }
  73. }