Fix inputs and add methods

This commit is contained in:
2026-05-07 13:55:02 +01:00
parent a77f75dcf4
commit 0f693a5de0
12 changed files with 500 additions and 93 deletions
+33 -1
View File
@@ -180,6 +180,8 @@ struct Scene {
element_pool[id]->click();
}
#warning "This does not take rotation into account \
reference and use reverse-transform on point then AABB check instead"
std::vector<uint64_t> elements_at(Vec2<float> position) {
std::vector<uint64_t> result;
@@ -211,6 +213,11 @@ struct App {
uint64_t current_scene_id = 0;
bool running = true;
Vec2<float> mouse_position = {-1, -1};
std::array<bool, 600> down_keys{};
std::vector<Key> pressed_keys;
std::vector<Key> released_keys;
Vec2<float> scroll = {0, 0};
std::string text = "";
void exit() {
running = false;
@@ -246,6 +253,11 @@ struct App {
Scene *scene = scene_pool[current_scene_id];
pressed_keys.clear();
released_keys.clear();
scroll = {0, 0};
text = "";
Event e;
while (window.poll(e)) {
switch (e.type) {
@@ -254,6 +266,12 @@ struct App {
break;
case Event::MOUSE_BUTTON_DOWN:
scene->click(e.mouse_button.position);
down_keys[e.mouse_button.button] = true;
pressed_keys.push_back(e.mouse_button.button);
break;
case Event::MOUSE_BUTTON_UP:
down_keys[e.mouse_button.button] = false;
released_keys.push_back(e.mouse_button.button);
break;
case Event::MOUSE_MOVE:
mouse_position = e.mouse_move.position;
@@ -261,10 +279,24 @@ struct App {
case Event::MOUSE_LEAVE:
mouse_position = {-1, -1};
break;
case Event::KEY_DOWN:
down_keys[e.key.key] = true;
pressed_keys.push_back(e.key.key);
break;
case Event::KEY_UP:
down_keys[e.key.key] = false;
released_keys.push_back(e.key.key);
break;
case Event::SCROLL:
scroll = e.scroll;
break;
case Event::TEXT_INPUT:
text += *e.text_input;
delete e.text_input;
break;
default:
break;
}
window.consume(e);
}
scene->update_scene(dt);