Ignore:
Timestamp:
06/14/14 22:40:25 (11 years ago)
Author:
epyon
Message:
  • object can now only created from root
  • all registration is done root side
  • gui::element draw and update logic fully in environment
  • root removed from object - a lot less coupling
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gui/gui_environment.cc

    r239 r257  
    3434{
    3535        m_area.dim( dimension( w->get_width(), w->get_height() ) );
    36         m_screen = new screen( this, m_area );
     36        m_screen = new screen( m_area );
    3737        m_renderer = new renderer( w, shader_path );
    3838        root::add_child( m_screen );
     
    4444}
    4545
     46element* nv::gui::environment::create_element( element* parent, const rectangle& r )
     47{
     48        element* result = new element( r );
     49        object_created( result );
     50        if ( parent == nullptr ) parent = m_screen;
     51        parent->add_child( result );
     52        return result;
     53}
     54
    4655void environment::update( element* e, uint32 elapsed )
    4756{
     57        e->on_update( elapsed );
     58        if ( e->is_visible() )
     59        {
     60                for ( object* i : *e )
     61                {
     62                        update( ((element*)i), elapsed );
     63                }
     64        }
    4865        if ( e->is_dirty() || e->m_render_data == nullptr )
    4966        {
     
    5572void environment::draw( element* e )
    5673{
    57         m_renderer->draw( e );
     74        if ( e->is_visible() )
     75        {
     76                e->on_draw();
     77                m_renderer->draw( e );
     78                for ( object* i : *e )
     79                {
     80                        draw((element*)i);
     81                }
     82        }
    5883}
    5984
    6085void environment::update()
    6186{
    62         m_screen->on_update( 0 );
     87        update( m_screen, 0 );
    6388}
    6489
    6590void environment::draw()
    6691{
    67         m_screen->on_draw();
     92        draw( m_screen );
    6893        m_renderer->draw();
    6994}
     
    77102environment::~environment()
    78103{
    79         destroy_children();
     104        destroy_children( this );
    80105        delete m_renderer;
    81106}
Note: See TracChangeset for help on using the changeset viewer.