Changeset 353 for trunk/src/engine
- Timestamp:
- 04/15/15 14:54:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/engine/particle_engine.cc
r323 r353 461 461 m_program_local = m_device->create_program( nv_particle_engine_vertex_shader_local, nv_particle_engine_fragment_shader ); 462 462 m_program_world = m_device->create_program( nv_particle_engine_vertex_shader_world, nv_particle_engine_fragment_shader ); 463 m_last_update = 0; 463 464 464 465 register_standard_emmiters(); … … 482 483 { 483 484 info->emmiters[i].active = true; 484 info->emmiters[i].last_create = 0; 485 info->emmiters[i].next_toggle = random::get().urange( data->emmiters[i].duration_min, data->emmiters[i].duration_max ); 485 info->emmiters[i].last_create = float( m_last_update ); 486 if ( data->emmiters[i].duration_max == 0 ) 487 info->emmiters[i].next_toggle = 0; 488 else 489 info->emmiters[i].next_toggle = m_last_update + random::get().urange( data->emmiters[i].duration_min, data->emmiters[i].duration_max ); 490 486 491 } 487 492 … … 492 497 (particle_vtx*)info->quads, data->quota*6, STREAM_DRAW ); 493 498 info->vtx_buffer = m_context->find_buffer( info->vtx_array, slot::POSITION ); 494 info->last_update = 0;499 info->last_update = m_last_update; 495 500 info->test = false; 496 501 // result->m_own_va = true; … … 511 516 nv::particle_engine::~particle_engine() 512 517 { 518 clear(); 513 519 m_device->release( m_program_world ); 514 520 m_device->release( m_program_local ); 515 521 } 522 523 void nv::particle_engine::reset() 524 { 525 clear(); 526 register_standard_emmiters(); 527 register_standard_affectors(); 528 } 529 530 void nv::particle_engine::clear() 531 { 532 while ( m_systems.size() > 0 ) 533 release( m_systems.get_handle( 0 ) ); 534 m_emmiters.clear(); 535 m_affectors.clear(); 536 m_names.clear(); 537 m_data.clear(); 538 m_last_update = 0; 539 } 540 516 541 517 542 void nv::particle_engine::release( particle_system system ) … … 531 556 { 532 557 particle_system_info* info = m_systems.get( system ); 558 m_last_update += ms; 533 559 if ( info ) 534 560 { … … 538 564 m_inv_view_dir = glm::normalize(-s.get_camera().get_direction()); 539 565 540 update_emmiters( info, m s);541 destroy_particles( info, m s);542 create_particles( info, m s);543 update_particles( info, m s);566 update_emmiters( info, m_last_update ); 567 destroy_particles( info, m_last_update ); 568 create_particles( info, m_last_update ); 569 update_particles( info, m_last_update ); 544 570 545 571 generate_data( info );
Note: See TracChangeset
for help on using the changeset viewer.