diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.cpp | 39 | ||||
| -rw-r--r-- | src/window.cpp | 31 |
2 files changed, 40 insertions, 30 deletions
diff --git a/src/main.cpp b/src/main.cpp index 9d4a0bf..17d7fb2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -78,31 +78,34 @@ int main() { } vec3 move_vec {}; - if (wnd.keyboard[KEYS::W]) { - move_vec += renderer.mapped_data->cam.forward; - } - if (wnd.keyboard[KEYS::S]) { - move_vec += -renderer.mapped_data->cam.forward; - } - if (wnd.keyboard[KEYS::D]) { - move_vec += renderer.mapped_data->cam.right; - } - if (wnd.keyboard[KEYS::A]) { - move_vec += -renderer.mapped_data->cam.right; - } - move_vec = move_vec.unit() * move_speed; + switch (event.key) { + case KEYS::W: { + move_vec = renderer.mapped_data->cam.forward.unit() * move_speed; + break; + } + case KEYS::S: { + move_vec = -renderer.mapped_data->cam.forward.unit() * move_speed; + break; + } + case KEYS::D: { + move_vec = renderer.mapped_data->cam.right.unit() * move_speed; + break; + } + case KEYS::A: { + move_vec = -renderer.mapped_data->cam.right.unit() * move_speed; + break; + } + default: + break; + } renderer.mapped_data->cam.move(move_vec); break; } - case EVENT_TYPES::MOVE: { - std::cerr << "X : " << event.x << " Y : " << event.y << std::endl; + default: break; - } - default: { - } } } diff --git a/src/window.cpp b/src/window.cpp index 273d7e9..840d570 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -227,6 +227,17 @@ window::~window() {} void window::poll_events() { MSG msg = {}; + // Generate keydown events pressed keys + for (size_t virtual_key = KEYS::SHIFT; virtual_key < KEYS::MAX_KEYS; virtual_key++) { + if (keyboard[virtual_key]) { + events.push_back({ + .key = (KEYS)virtual_key, + .type = EVENT_TYPES::KEY_PRESS, + }); + } + } + + while (PeekMessage(&msg, win_handle, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); @@ -255,26 +266,22 @@ LRESULT window::message_handler(HWND hwnd, UINT umsg, WPARAM wparam, LPARAM lpar } case WM_KEYDOWN: { - auto key_press_event = event { - .key = (KEYS)wparam, - .type = EVENT_TYPES::KEY_PRESS, - }; - keyboard[wparam] = true; - events.push_back(key_press_event); + events.push_back({ + .key = (KEYS)wparam, + .type = EVENT_TYPES::KEY_PRESS, + }); break; } case WM_KEYUP: { - auto key_press_event = event { - .key = (KEYS)wparam, - .type = EVENT_TYPES::KEY_RELEASE, - }; - keyboard[wparam] = false; - events.push_back(key_press_event); + events.push_back({ + .key = (KEYS)wparam, + .type = EVENT_TYPES::KEY_RELEASE, + }); break; } |
