Fix inputs and add methods
This commit is contained in:
+33
-1
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user