/
d.vision
/
division_engine_cpp
Обзор
Документация
Войти
/
d.vision
/
division_engine_cpp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/canvas/input_handler.cpp
49 строк
1 KB
den163
Added base ui input handling
06 ноя 2024, 20:51
06 ноя 2024, 20:51
04ca94a
Код
Авторство
О чём код?
#include "division_engine/canvas/input_handler.hpp" #include "canvas/components/collision_rect.hpp" #include "canvas/components/render_batch.hpp" #include "canvas/components/render_order.hpp" #include "canvas/components/tags.hpp" #include <optional> namespace division_engine::canvas { InputHandler::InputHandler(State& state) { _query = state.world.query_builder<const CollisionRect, const components::RenderOrder>() .with<components::tags::Selectable>(flecs::Tag) .order_by<RenderOrder>([](auto, const auto* x, auto, const auto* y) { return -x->compare(*y); }) .build(); } InputHandler::~InputHandler() {} void InputHandler::fill_render_queue(State& state) { auto mousePos = state.context.get_mouse_position(); state.selected_id = std::nullopt; _query.iter( [&](flecs::iter& it, const CollisionRect* colliders_ptr, const RenderOrder* render_order_ptr ) { if (state.selected_id.has_value()) { return; } const auto& entities = it.entities(); for (const auto i : it) { if (colliders_ptr[i].rect.contains(mousePos)) { state.selected_id = entities[i]; break; } } } ); } }