void GameObjectManager::Update(float32 timeElapsed) { isInUpdate = true; // Than perform usual update for (List<GameObject*>::iterator currentPos = objects.begin(); currentPos != objects.end(); ++currentPos) { GameObject *object = *currentPos; if (object->dead)continue; if(object->GetParent() == 0) object->Update(timeElapsed); } RecalcObjectsHierarchy(); for (List<GameObject*>::iterator currentPos = objects.begin(); currentPos != objects.end(); ++currentPos) { GameObject * object = *currentPos; if (object->dead)continue; object->CollisionPhase(); } isInUpdate = false; ProcessChangesStack(); }
void GameObjectManager::RecalcObjectsHierarchy() { List<GameObject*>::iterator currentPos_end = objects.end(); for(List<GameObject*>::iterator currentPos = objects.begin(); currentPos != currentPos_end; ++currentPos) { GameObject * object = *currentPos; if (object->dead)continue; if (object->GetParent() == 0) object->RecalcHierarchy(drawState); } }