App: ui_scene updates controller ui root on scene enter/exit
This commit is contained in:
parent
692da35066
commit
8aa6c8a3bb
2 changed files with 28 additions and 0 deletions
|
|
@ -12,6 +12,9 @@ namespace psemek::app
|
|||
{
|
||||
ui_scene(ui::controller & controller);
|
||||
|
||||
void on_scene_enter() override;
|
||||
void on_scene_exit() override;
|
||||
|
||||
void on_resize(int width, int height) override;
|
||||
|
||||
void on_mouse_move(int x, int y, int dx, int dy) override;
|
||||
|
|
@ -31,8 +34,14 @@ namespace psemek::app
|
|||
|
||||
ui::controller & controller() const { return controller_; }
|
||||
|
||||
protected:
|
||||
|
||||
std::shared_ptr<ui::element> get_ui() { return ui_; }
|
||||
void set_ui(std::shared_ptr<ui::element> ui);
|
||||
|
||||
private:
|
||||
ui::controller & controller_;
|
||||
std::shared_ptr<ui::element> ui_;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,18 @@ namespace psemek::app
|
|||
: controller_(controller)
|
||||
{}
|
||||
|
||||
void ui_scene::on_scene_enter()
|
||||
{
|
||||
scene_base::on_scene_enter();
|
||||
controller_.set_root(ui_);
|
||||
}
|
||||
|
||||
void ui_scene::on_scene_exit()
|
||||
{
|
||||
scene_base::on_scene_exit();
|
||||
controller_.set_root(nullptr);
|
||||
}
|
||||
|
||||
void ui_scene::on_resize(int width, int height)
|
||||
{
|
||||
scene_base::on_resize(width, height);
|
||||
|
|
@ -87,4 +99,11 @@ namespace psemek::app
|
|||
controller_.render(rt);
|
||||
}
|
||||
|
||||
void ui_scene::set_ui(std::shared_ptr<ui::element> ui)
|
||||
{
|
||||
ui_ = std::move(ui);
|
||||
if (active())
|
||||
controller_.set_root(ui_);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue