/// Renders all the particle systems. Passing in false for doUpdate allows /// you to render the systems multiple times per frame without updating. This /// is useful when a shader requires multiple passes (such as water reflection) /// \param doUpdate Whether the systems should be updated before rendering void ParticleEngine::render(bool doUpdate) { static SystemSortedSet sortedSystems; sortedSystems.clear(); if(m_UIDMap.size() == 0) return; if(doUpdate) updateSystems(); // render all systems for(UIDMapIter iter = m_UIDMap.begin(); iter != m_UIDMap.end(); iter++) { sortedSystems.insert(iter->second); } for(SystemSortedSetIter iter = sortedSystems.rbegin(); iter != sortedSystems.rend(); iter++) { (*iter)->render(); } }
void Engine::run() { initializeSystems(); updateSystems(); shutdownSystems(); }