void ETHActiveEntityHandler::UpdateActiveEntities(const Vector2& zAxisDir, ETHBucketManager& buckets, const unsigned long lastFrameElapsedTime) { #if defined(_DEBUG) || defined(DEBUG) TestEntityLists(); #endif for (std::list<ETHRenderEntity*>::iterator iter = m_dynamicOrTempEntities.begin(); iter != m_dynamicOrTempEntities.end();) { ETHRenderEntity* entity = (*iter); if (!(entity->IsAlive()) || RemoveFinishedTemporaryEntity(entity, buckets)) { #if defined(_DEBUG) || defined(DEBUG) ETH_STREAM_DECL(ss) << GS_L("Entity removed from dynamic entity list: ") << entity->GetEntityName(); m_provider->Log(ss.str(), Platform::Logger::INFO); #endif entity->Release(); iter = m_dynamicOrTempEntities.erase(iter); continue; } entity->Update(lastFrameElapsedTime, zAxisDir, buckets); if (entity->HasAnyCallbackFunction()) { entity->RunCallbackScript(); } ++iter; } // todo/to-do remove duplicate code for (std::list<ETHRenderEntity*>::iterator iter = m_lastFrameCallbacks.begin(); iter != m_lastFrameCallbacks.end();) { ETHRenderEntity* entity = (*iter); if (!(entity->IsAlive())) { #if defined(_DEBUG) || defined(DEBUG) ETH_STREAM_DECL(ss) << GS_L("Entity callback removed: ") << entity->GetEntityName(); m_provider->Log(ss.str(), Platform::Logger::INFO); #endif entity->Release(); iter = m_lastFrameCallbacks.erase(iter); continue; } else { entity->Update(lastFrameElapsedTime, zAxisDir, buckets); if (entity->HasAnyCallbackFunction()) { entity->RunCallbackScript(); } entity->Release(); ++iter; } } m_lastFrameCallbacks.clear(); }