// Remove a ceiling's thinker void Map::RemoveActiveCeiling(ceiling_t *ceiling) { activeceilings.erase(ceiling->li); // remove the pointer from list ceiling->sector->ceilingdata = NULL; RemoveThinker(ceiling); TagFinished(ceiling->sector->tag); }
void VLevel::TickWorld(float DeltaTime) { guard(VLevel::TickWorld); // Run thinkers for (VThinker* Th = ThinkerHead; Th; Th = Th->Next) { if (!(Th->GetFlags() & _OF_DelayedDestroy)) { Th->Tick(DeltaTime); } else { RemoveThinker(Th); Th->ConditionalDestroy(); } } // Don't update specials if the level is frozen if (!(LevelInfo->LevelInfoFlags2 & VLevelInfo::LIF2_Frozen)) { LevelInfo->eventUpdateSpecials(); } for (int i = 0; i < MAXPLAYERS; i++) { if (LevelInfo->Game->Players[i] && LevelInfo->Game->Players[i]->PlayerFlags & VBasePlayer::PF_Spawned) { LevelInfo->Game->Players[i]->eventSetViewPos(); } } Time += DeltaTime; TicTime++; unguard; }