#include "input.h" #include namespace Input { static void keyboard_input_observer(KeyboardInput const& keyboard_input); InputModule::InputModule(flecs::world& world) { world.component(); world.component(); world.component(); world.system>("ClearButtonInput") .kind(flecs::PostUpdate) .each(ButtonInput::clear_button_input); world.observer("KeyboardInputObserver") .event(flecs::OnSet) .each(keyboard_input_observer); } void keyboard_input_observer(KeyboardInput const& keyboard_input) { auto* key_state = keyboard_input.window.get_mut>(); if (keyboard_input.action == static_cast(GLFW_PRESS)) { key_state->press(keyboard_input.key_code); } else if (keyboard_input.action == static_cast(GLFW_RELEASE)) { key_state->release(keyboard_input.key_code); } } template void ButtonInput::clear_button_input(ButtonInput& state) { state.just_pressed_keys.clear(); state.just_released_keys.clear(); } template class ButtonInput; } // namespace Input