From e97812dcaf6f5a7202bc45d9431f7702f8218f6f Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sun, 13 Sep 2020 11:11:58 +0300 Subject: [PATCH] Add on_scene_enter & on_scene_exit --- libs/app/include/psemek/app/scene.hpp | 3 +++ libs/app/source/app.cpp | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) 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; }