diff --git a/libs/ui/include/psemek/ui/event_interceptor.hpp b/libs/ui/include/psemek/ui/event_interceptor.hpp index e91dd571..f1648e9d 100644 --- a/libs/ui/include/psemek/ui/event_interceptor.hpp +++ b/libs/ui/include/psemek/ui/event_interceptor.hpp @@ -21,6 +21,7 @@ namespace psemek::ui void on_mouse_click(std::function callback); void on_mouse_wheel(std::function callback); void on_key_press(std::function callback); + void on_update(std::function callback); bool on_event(mouse_move const & event) override; bool on_event(mouse_click const & event) override; @@ -29,6 +30,8 @@ namespace psemek::ui bool transparent() const override { return true; } + void update(float dt) override; + void draw(painter &) const override {} private: @@ -38,6 +41,7 @@ namespace psemek::ui std::function mouse_click_callback_; std::function mouse_wheel_callback_; std::function key_press_callback_; + std::function update_callback_; }; } diff --git a/libs/ui/source/event_interceptor.cpp b/libs/ui/source/event_interceptor.cpp index 8172e2c5..8163e2ef 100644 --- a/libs/ui/source/event_interceptor.cpp +++ b/libs/ui/source/event_interceptor.cpp @@ -59,6 +59,11 @@ namespace psemek::ui key_press_callback_ = std::move(callback); } + void event_interceptor::on_update(std::function callback) + { + update_callback_ = std::move(callback); + } + bool event_interceptor::on_event(mouse_move const & event) { if (child_) @@ -92,4 +97,10 @@ namespace psemek::ui return false; } + void event_interceptor::update(float dt) + { + if (update_callback_) + update_callback_(dt); + } + }