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);
|
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_resize(int width, int height) override;
|
||||||
|
|
||||||
void on_mouse_move(int x, int y, int dx, int dy) 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_; }
|
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:
|
private:
|
||||||
ui::controller & controller_;
|
ui::controller & controller_;
|
||||||
|
std::shared_ptr<ui::element> ui_;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,18 @@ namespace psemek::app
|
||||||
: controller_(controller)
|
: 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)
|
void ui_scene::on_resize(int width, int height)
|
||||||
{
|
{
|
||||||
scene_base::on_resize(width, height);
|
scene_base::on_resize(width, height);
|
||||||
|
|
@ -87,4 +99,11 @@ namespace psemek::app
|
||||||
controller_.render(rt);
|
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