Beispiel #1
0
// 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;
}