diff --git a/libs/app/include/psemek/app/scene.hpp b/libs/app/include/psemek/app/scene.hpp index 889537d0..da50c18b 100644 --- a/libs/app/include/psemek/app/scene.hpp +++ b/libs/app/include/psemek/app/scene.hpp @@ -9,6 +9,9 @@ namespace psemek::app { virtual ~scene() = 0; + virtual void on_scene_enter() {} + virtual void on_scene_exit() {} + virtual void on_resize(int width, int height) {} virtual void on_focus_gained() {} virtual void on_focus_lost() {} diff --git a/libs/app/source/app.cpp b/libs/app/source/app.cpp index a3d92e50..51c65e23 100644 --- a/libs/app/source/app.cpp +++ b/libs/app/source/app.cpp @@ -198,6 +198,7 @@ namespace psemek::app void app::run() { impl().running = true; + impl().get_scene()->on_scene_enter(); while (running()) { poll_events(); @@ -221,9 +222,13 @@ namespace psemek::app scene * app::set_scene(scene * s) { - impl().had_initial_resize = false; + impl().get_scene()->on_scene_exit(); + impl().had_initial_resize = false; std::swap(s, impl().current_scene); + + impl().get_scene()->on_scene_enter(); + return s; }