Support animating UI components
This commit is contained in:
parent
ddaf2407a9
commit
9234a28344
3 changed files with 23 additions and 0 deletions
|
|
@ -28,6 +28,8 @@ namespace psemek::ui::impl
|
|||
virtual bool on_event(mouse_button_event const &) { return false; }
|
||||
virtual bool on_event(key_event const &) { return false; }
|
||||
|
||||
virtual void animate(float) {}
|
||||
|
||||
virtual void draw(renderer &) {}
|
||||
virtual void post_draw(renderer &) {}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ namespace psemek::ui::impl
|
|||
bool on_event(mouse_button_event const & event);
|
||||
bool on_event(key_event const & event);
|
||||
|
||||
void animate(float dt);
|
||||
void draw(renderer & renderer);
|
||||
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -72,6 +72,21 @@ namespace psemek::ui::impl
|
|||
return element->on_event(event);
|
||||
}
|
||||
|
||||
void animate(float dt)
|
||||
{
|
||||
animate_impl(dt, root.get());
|
||||
}
|
||||
|
||||
void animate_impl(float dt, component * element)
|
||||
{
|
||||
if (!element)
|
||||
return;
|
||||
|
||||
element->animate(dt);
|
||||
for (auto const & child : element->children())
|
||||
animate_impl(dt, child.get());
|
||||
}
|
||||
|
||||
void draw(renderer & renderer)
|
||||
{
|
||||
draw_impl(renderer, root.get());
|
||||
|
|
@ -132,6 +147,11 @@ namespace psemek::ui::impl
|
|||
return impl().on_event(event);
|
||||
}
|
||||
|
||||
void controller::animate(float dt)
|
||||
{
|
||||
impl().animate(dt);
|
||||
}
|
||||
|
||||
void controller::draw(renderer & renderer)
|
||||
{
|
||||
impl().draw(renderer);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue