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(mouse_button_event const &) { return false; }
|
||||||
virtual bool on_event(key_event const &) { return false; }
|
virtual bool on_event(key_event const &) { return false; }
|
||||||
|
|
||||||
|
virtual void animate(float) {}
|
||||||
|
|
||||||
virtual void draw(renderer &) {}
|
virtual void draw(renderer &) {}
|
||||||
virtual void post_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(mouse_button_event const & event);
|
||||||
bool on_event(key_event const & event);
|
bool on_event(key_event const & event);
|
||||||
|
|
||||||
|
void animate(float dt);
|
||||||
void draw(renderer & renderer);
|
void draw(renderer & renderer);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,21 @@ namespace psemek::ui::impl
|
||||||
return element->on_event(event);
|
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)
|
void draw(renderer & renderer)
|
||||||
{
|
{
|
||||||
draw_impl(renderer, root.get());
|
draw_impl(renderer, root.get());
|
||||||
|
|
@ -132,6 +147,11 @@ namespace psemek::ui::impl
|
||||||
return impl().on_event(event);
|
return impl().on_event(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void controller::animate(float dt)
|
||||||
|
{
|
||||||
|
impl().animate(dt);
|
||||||
|
}
|
||||||
|
|
||||||
void controller::draw(renderer & renderer)
|
void controller::draw(renderer & renderer)
|
||||||
{
|
{
|
||||||
impl().draw(renderer);
|
impl().draw(renderer);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue