main.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /*
  2. * Copyright (c) 2012-2014 Daniele Bartolini and individual contributors.
  3. * License: https://github.com/taylor001/crown/blob/master/LICENSE
  4. */
  5. #include "main.h"
  6. #include "mouse.h"
  7. #include "keyboard.h"
  8. #include "touch.h"
  9. #include "device.h"
  10. #include "os_event_queue.h"
  11. #include "input.h"
  12. #include <bgfx.h>
  13. namespace crown
  14. {
  15. bool process_events()
  16. {
  17. using namespace input_globals;
  18. OsEvent event;
  19. bool exit = false;
  20. while(next_event(event))
  21. {
  22. if (event.type == OsEvent::NONE) continue;
  23. switch (event.type)
  24. {
  25. case OsEvent::TOUCH:
  26. {
  27. const OsTouchEvent& ev = event.touch;
  28. switch (ev.type)
  29. {
  30. case OsTouchEvent::POINTER: touch().set_pointer_state(ev.x, ev.y, ev.pointer_id, ev.pressed); break;
  31. case OsTouchEvent::MOVE: touch().set_position(ev.pointer_id, ev.x, ev.y); break;
  32. default: CE_FATAL("Oops, unknown touch event type"); break;
  33. }
  34. break;
  35. }
  36. case OsEvent::MOUSE:
  37. {
  38. const OsMouseEvent& ev = event.mouse;
  39. switch (ev.type)
  40. {
  41. case OsMouseEvent::BUTTON: mouse().set_button_state(ev.x, ev.y, ev.button, ev.pressed); break;
  42. case OsMouseEvent::WHEEL: mouse().set_wheel(ev.x, ev.y, ev.wheel); break;
  43. case OsMouseEvent::MOVE: mouse().set_position(ev.x, ev.y); break;
  44. default: CE_FATAL("Oops, unknown mouse event type"); break;
  45. }
  46. break;
  47. }
  48. case OsEvent::KEYBOARD:
  49. {
  50. const OsKeyboardEvent& ev = event.keyboard;
  51. keyboard().set_button_state(ev.button, ev.pressed);
  52. break;
  53. }
  54. case OsEvent::METRICS:
  55. {
  56. const OsMetricsEvent& ev = event.metrics;
  57. mouse().set_metrics(ev.width, ev.height);
  58. device()->update_resolution(ev.width, ev.height);
  59. bgfx::reset(ev.width, ev.height, BGFX_RESET_VSYNC);
  60. break;
  61. }
  62. case OsEvent::EXIT:
  63. {
  64. exit = true;
  65. break;
  66. }
  67. case OsEvent::PAUSE:
  68. {
  69. device()->pause();
  70. break;
  71. }
  72. case OsEvent::RESUME:
  73. {
  74. device()->unpause();
  75. break;
  76. }
  77. default:
  78. {
  79. CE_FATAL("Unknown Os Event");
  80. break;
  81. }
  82. }
  83. }
  84. return exit;
  85. }
  86. } // namespace crown