Improve NoDelay reliability.

- Instead of tying NoDelay behavior to OF_JustSpawned, use a new actor
  flag, MF7_HANDLENODELAY. This only gets cleared once it has actually
  been checked by Tick(). This is necessary because freeze mode delays the
  initial run of Tick() past the initial spawn, so OF_JustSpawned will no
  longer be set when it does the initial tick.
- Delay NoDelay processing if an actor is spawned dormant. Actors spawned
  dormant have Deactivate() called before they tick, so MF7_HANDLENODELAY
  will remain set as long as an actor is dormant. This allows the NoDelay
  handling to occur as expected once it is activated.
This commit is contained in:
Randy Heit 2013-09-17 20:44:13 -05:00
commit e021fba5e1
4 changed files with 22 additions and 16 deletions

View file

@ -457,7 +457,7 @@ int DThinker::TickThinkers (FThinkerList *list, FThinkerList *dest)
node->PostBeginPlay();
}
else if (dest != NULL)
{ // Move thinker from this list to the destination list
{
I_Error("There is a thinker in the fresh list that has already ticked.\n");
}