Changeset 543 for trunk/src/engine


Ignore:
Timestamp:
02/06/17 21:13:58 (8 years ago)
Author:
epyon
Message:
  • fixes in handle store
  • removal of get_handle
  • indices instead of handles
  • efficient handle store clears
Location:
trunk/src/engine
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/engine/particle_engine.cc

    r534 r543  
    350350}
    351351
     352void nv::particle_engine::release( particle_system_info* info )
     353{
     354        if ( info )
     355        {
     356                m_pgm->unref( info->group );
     357                delete[] info->particles;
     358        }
     359}
     360
    352361void nv::particle_engine::clear()
    353362{
    354         while ( m_systems.size() > 0 )
    355                 release( m_systems.get_handle( 0 ) );
     363        for ( auto& s : m_systems )
     364                release( &s );
     365        m_systems.clear();
    356366        if ( m_pgm )
    357367                m_pgm->reset();
     
    363373void nv::particle_engine::release( particle_system system )
    364374{
    365         particle_system_info* info = m_systems.get( system );
    366         if ( info )
    367         {
    368                 m_pgm->unref( info->group );
    369                 delete[] info->particles;
     375        if ( particle_system_info* info = m_systems.get( system ) )
     376        {
     377                release( info );
    370378                m_systems.destroy( system );
    371379        }
  • trunk/src/engine/particle_group.cc

    r520 r543  
    3333void particle_group_manager::release( particle_group group )
    3434{
    35         particle_group_info* info = m_groups.get( group );
    36         if ( info )
    37         {
    38                 delete[] info->quads;
    39                 m_context->release( info->vtx_array );
     35        if ( particle_group_info* info = m_groups.get( group ) )
     36        {
     37                release( info );
    4038                m_groups.destroy( group );
    4139        }
     
    194192}
    195193
     194void nv::particle_group_manager::release( particle_group_info* info )
     195{
     196        if ( info )
     197        {
     198                delete[] info->quads;
     199                m_context->release( info->vtx_array );
     200        }
     201}
     202
    196203particle_group_manager::~particle_group_manager()
    197204{
     
    201208void particle_group_manager::clear()
    202209{
    203         while ( m_groups.size() > 0 )
    204                 release( m_groups.get_handle( 0 ) );
     210        for ( auto& g : m_groups )
     211                release( &g );
     212        m_groups.clear();
    205213}
    206214
Note: See TracChangeset for help on using the changeset viewer.