A class representing any object in the game that runs logic every game tick,
i.e., "thinks." Most classes derive from Thinker
, directly or indirectly.
All thinkers are grouped by their "stat" number, or "statnum," which specifies the ordering of which thinkers are run, first to last. There are 127 stat numbers total, 20 of which are not used by the engine and may be used for any purpose.
The user-defined stat numbers begin at Thinker.STAT_USER
and end at
Thinker.STAT_USER_MAX
. Do not attempt to use normal integers as stat numbers
except as relative to these two.
Thinkers which do not think and are elided from many checks:
Name | Description |
---|---|
Thinker.STAT_INFO |
Info queue (used by SpecialSpot and its descendants.) |
Thinker.STAT_DECAL |
Decals that cannot be deleted. |
Thinker.STAT_AUTODECAL |
Decals that can be deleted (were not placed by the map.) |
Thinker.STAT_CORPSEPOINTER |
An entry in Hexen's corpse queue. |
Thinker.STAT_TRAVELLING |
Any actor travelling between maps in a hub. |
Thinker.STAT_STATIC |
Thinkers persistent across maps. |
Thinkers which do think and are mandatory to many checks:
Name | Description |
---|---|
Thinker.STAT_SCROLLER |
Texture scrollers and carriers. |
Thinker.STAT_PLAYER |
All PlayerPawn actors. |
Thinker.STAT_BOSSTARGET |
BossBrain targets. |
Thinker.STAT_LIGHTNING |
Lightning as used by Hexen. |
Thinker.STAT_DECALTHINKER |
Decal animators. |
Thinker.STAT_INVENTORY |
All Inventory items. |
Thinker.STAT_LIGHT |
Sector lighting thinkers. |
Thinker.STAT_LIGHTTRANSFER |
Sector lighting transfer thinkers. |
Thinker.STAT_EARTHQUAKE |
Quake effects. |
Thinker.STAT_MAPMARKER |
All MapMarker actors. |
Thinker.STAT_DLIGHT |
Dynamic lights. |
Thinker.STAT_DEFAULT |
Anything not in any other category. Most actors go here. |
Thinker.STAT_SECTOREFFECT |
Sector effects that cause floor or ceiling movement. |
Thinker.STAT_ACTORMOVER |
All ActorMover actors. |
Thinker.STAT_SCRIPTS |
The ACS VM. |
Thinker.STAT_BOT |
All bot logic. This is not bound to their actor. |
class Thinker : Object play
{
const TICRATE;
LevelLocals Level;
void ChangeStatNum(int stat);
virtual void PostBeginPlay();
virtual void Tick();
static clearscope int Tics2Seconds(int tics);
}
The number of game ticks in a second. This value is always int(35)
.
The level this Thinker
is in, which may differ from another one's.
Changes the statnum of this Thinker
.
Called at the very end of this Thinker's initialization.
Called every game tick. The order between this thinker's Tick
and every other
thinker in the same statnum is unspecified.
Roughly converts a number of tics to an integral amount of seconds. Equivalent
to tics / TICRATE
.