aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp39
-rw-r--r--src/window.cpp31
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;
}