CBaseEntity: Difference between revisions
mNo edit summary |
(→Fields) |
||
Line 86: | Line 86: | ||
{{DEFINE_FIELD|m_bForcePurgeFixedupStrings {{in|{{tf2}}{{portal2}}}}|FIELD_BOOLEAN}} | {{DEFINE_FIELD|m_bForcePurgeFixedupStrings {{in|{{tf2}}{{portal2}}}}|FIELD_BOOLEAN}} | ||
{{DEFINE_FIELD|m_flCreateTime {{in|{{l4ds}}{{as}}}}| | {{DEFINE_FIELD|m_flCreateTime {{in|{{l4ds}}{{as}}}}|FIELD_TIME}} | ||
{{DEFINE_FIELD|m_bClientSideRagdoll {{l4d|since}}|FIELD_BOOLEAN}} | {{DEFINE_FIELD|m_bClientSideRagdoll {{l4d|since}}|FIELD_BOOLEAN}} | ||
Line 301: | Line 301: | ||
* {{tf2}}{{l4d2|since}} - [https://github.com/ReactiveDrop/reactivedrop_public_src/blob/0b3a6dcd74dce45e35ca6c0d823fd19ccc610b91/src/game/server/baseentity.cpp#L7421 ScriptThink] - handles vscript thinkfunction | * {{tf2}}{{l4d2|since}} - [https://github.com/ReactiveDrop/reactivedrop_public_src/blob/0b3a6dcd74dce45e35ca6c0d823fd19ccc610b91/src/game/server/baseentity.cpp#L7421 ScriptThink] - handles vscript thinkfunction | ||
* {{l4ds}}{{asw}} - FrictionRevertThink | * {{l4ds}}{{asw}} - FrictionRevertThink | ||
== Programming related == | == Programming related == | ||
To get the class name of an entity, use | To get the class name of an entity, use |
Revision as of 18:07, 26 September 2024

![]() |
---|
CBaseEntity |
![]() |
The base class for all entities.

Fields
m_iName <FIELD_STRING>
- Name other entities use to refer to this entity
m_vecOrigin <FIELD_VECTOR>
- Relative to parent[confirm]
m_vecAbsOrigin <FIELD_POSITION_VECTOR>
m_vecAbsVelocity <FIELD_VECTOR>
m_angRotation <FIELD_VECTOR>
m_angAbsRotation <FIELD_VECTOR>
m_fFlags <FIELD_INTEGER>
m_iEFlags <FIELD_INTEGER>
m_debugOverlays <FIELD_INTEGER>
m_flPrevAnimTime <FIELD_TIME>
m_flAnimTime <FIELD_TIME>
m_lifeState <FIELD_CHARACTER>
- LIFE_ALIVE = 0
- LIFE_DYING = 1 // playing death animation or still falling off of a ledge waiting to hit ground
- LIFE_DEAD = 2 // dead. lying still.
- LIFE_RESPAWNABLE = 3
- LIFE_DISCARDBODY = 4
m_takedamage <FIELD_CHARACTER>
- DAMAGE_NO = 0
- DAMAGE_EVENTS_ONLY = 1 // Call damage functions, but don't modify health
- DAMAGE_YES = 2
- DAMAGE_AIM = 3
m_MoveCollide <FIELD_CHARACTER>
m_flElasticity <FIELD_FLOAT>
touchStamp <FIELD_INTEGER>
m_flDesiredShadowCastDistance <FIELD_FLOAT>
m_flGroundChangeTime <FIELD_TIME>
m_nWaterType <FIELD_CHARACTER>
m_pBlocker <FIELD_EHANDLE>
m_flVPhysicsUpdateLocalTime <FIELD_FLOAT>
m_flMoveDoneTime <FIELD_FLOAT>
m_bAlternateSorting <FIELD_BOOLEAN>
m_flSimulationTime <FIELD_TIME>
m_nLastThinkTick <FIELD_TICK>
m_nSimulationTick <FIELD_TICK>
m_bSimulatedEveryTick <FIELD_BOOLEAN>
m_bAnimatedEveryTick <FIELD_BOOLEAN>
m_nTransmitStateOwnedCounter <FIELD_CHARACTER>
m_pParent <FIELD_EHANDLE>
m_iParentAttachment <FIELD_CHARACTER>
m_hMoveParent <FIELD_EHANDLE>
m_hMoveChild <FIELD_EHANDLE>
m_hMovePeer <FIELD_EHANDLE>
m_hDamageFilter <FIELD_EHANDLE>
m_hOwnerEntity <FIELD_EHANDLE>
m_hEffectEntity <FIELD_EHANDLE>
m_hGroundEntity <FIELD_EHANDLE>
m_pfnThink <FIELD_FUNCTION>
m_pfnTouch <FIELD_FUNCTION>
m_pfnUse <FIELD_FUNCTION>
m_pfnBlocked <FIELD_FUNCTION>
m_pfnMoveDone <FIELD_FUNCTION>
<span id="m_bForcePurgeFixedupStrings (in )">m_bForcePurgeFixedupStrings (in
) <FIELD_BOOLEAN>
<span id="m_flCreateTime (in )">m_flCreateTime (in
) <FIELD_TIME>
<span id="m_bClientSideRagdoll (in all games since )">m_bClientSideRagdoll (in all games since
) <FIELD_BOOLEAN>
<span id="m_iszScriptId (in all games since )(also in
)">m_iszScriptId (in all games since
)(also in
) <FIELD_STRING>
Only
Left 4 Dead 2
m_hScriptUseTarget <FIELD_EHANDLE>
m_PreStasisMoveType <FIELD_INTEGER>
m_bIsInStasis <FIELD_BOOLEAN>
Only
Portal 2
m_iSignifierName <FIELD? 4bytes>
m_iObjectCapsCache <FIELD? 4bytes>
Array fields
m_rgflCoordinateFrame[12] <FIELD_FLOAT>
Only
Team Fortress 2
m_nModelIndexOverrides[4] <FIELD_INTEGER>
Keyfield since
Alien Swarm and in
Team Fortress 2
m_iTeamNum <FIELD_INTEGER> (teamnumber)
m_CollisionGroup <FIELD_INTEGER> (CollisionGroup)
m_MoveType <FIELD_CHARACTER> (MoveType)
Keyfields
m_iClassname <FIELD_STRING> (classname)
m_iGlobalname <FIELD_STRING> (globalname)
m_iParent <FIELD_STRING> (parentname)
m_iHammerID <FIELD_INTEGER> (hammerid)
- The entity's unique Hammer ID that's auto-generated on map compiles. Mainly used by plugins or debugging commands (like the ent_keyvalue command). Entities spawned in run-time don't have a Hammer ID.
m_flSpeed <FIELD_FLOAT> (speed)
m_nRenderFX <FIELD_CHARACTER> (renderfx)
m_nRenderMode <FIELD_CHARACTER> (rendermode)
m_nNextThinkTick <FIELD_TICK> (nextthink)
- Amount of time before the entity thinks again.
m_fEffects <FIELD_INTEGER> (effects)
m_clrRender <FIELD_COLOR32> (rendercolor)
m_nModelIndex <FIELD_SHORT> (modelindex)
- Given the number index from dumping the
cl_precacheinfo modelprecache
table, sets entity model to the index.Warning:If an entity has animations that will be played, then the set model also must have its own sequences, else the game crashes.
m_iszResponseContext <FIELD_STRING> (ResponseContext)
- Pre-defined response system contexts; Format is
[key]:[value],[key]:[value],...
and so on.Tip:Can also be filtered for or against!
m_iMaxHealth <FIELD_INTEGER> (max_health)
m_iHealth <FIELD_INTEGER> (health)
m_target <FIELD_STRING> (target)
m_iszDamageFilterName <FIELD_STRING> (damagefilter)
m_flShadowCastDistance <FIELD_FLOAT> (shadowcastdist)
m_ModelName <FIELD_MODELNAME> (model)
- In-game representation of the entity to display
m_vecBaseVelocity <FIELD_VECTOR> (basevelocity)
m_vecAngVelocity <FIELD_VECTOR> (avelocity)
m_nWaterLevel <FIELD_CHARACTER> (waterlevel)
m_flGravity <FIELD_FLOAT> (gravity)
m_flFriction <FIELD_FLOAT> (friction)
m_flLocalTime <FIELD_FLOAT> (ltime)
- The local time of the entity, independent of the global clock. Used mainly for physics calculations.
m_vecVelocity <FIELD_VECTOR> (velocity)
m_iTextureFrameIndex <FIELD_CHARACTER> (texframeindex)
- The initial frame number for all animated textures on this entity.
m_spawnflags <FIELD_INTEGER> (spawnflags)
- Toggles exclusive features of an entity, its specific number is determined by the combination of flags added.
m_vecViewOffset <FIELD_VECTOR> (view_ofs)
Only in
Left 4 Dead 2
m_bDisableX360 <FIELD_BOOLEAN> (disableX360)
m_bGlowBackfaceMult <FIELD? 4bytes> (glowbackfacemult)
Left 4 Dead 2,
Alien Swarm,
Portal 2
m_AIAddOn <FIELD? 4bytes> (addon)
m_bLagCompensate <FIELD_BOOLEAN> (LagCompensate)
Since
Left 4 Dead 2 and also in
Team Fortress 2
m_iszVScripts <FIELD_STRING> (vscripts)
m_iszScriptThinkFunction <FIELD_STRING> (thinkfunction)
Since
Left 4 Dead
m_nMinCPULevel <FIELD_CHARACTER> (mincpulevel)
m_nMaxCPULevel <FIELD_CHARACTER> (maxcpulevel)
m_nMinGPULevel <FIELD_CHARACTER> (mingpulevel)
m_nMaxGPULevel <FIELD_CHARACTER> (maxgpulevel)
m_flFadeScale <FIELD_FLOAT> (fadescale)
Tables

m_Collision.m_vecMins
m_Collision (CCollisionProperty)
m_vecMins <FIELD_VECTOR>
m_vecMaxs <FIELD_VECTOR>
m_usSolidFlags <FIELD_SHORT>
m_nSurroundType <FIELD_CHARACTER>
m_flRadius <FIELD_FLOAT>
m_triggerBloat <FIELD_CHARACTER>
m_vecSpecifiedSurroundingMins <FIELD_VECTOR>
m_vecSpecifiedSurroundingMaxs <FIELD_VECTOR>
m_vecSurroundingMins <FIELD_VECTOR>
m_vecSurroundingMaxs <FIELD_VECTOR>
<span id="m_bUniformTriggerBloat (only in )">m_bUniformTriggerBloat (only in
) <FIELD_BOOLEAN>
m_nSolidType <FIELD_CHARACTER> (solid)
Removed since
Left 4 Dead
m_vecMinsPreScaled <FIELD_VECTOR>
m_vecMaxsPreScaled <FIELD_VECTOR>
m_vecSpecifiedSurroundingMinsPreScaled <FIELD_VECTOR>
m_vecSpecifiedSurroundingMaxsPreScaled <FIELD_VECTOR>
m_Network (CServerNetworkProperty)
m_hParent <FIELD_EHANDLE>
Only
Left 4 Dead 2 - m_Glow (CGlowProperty)
m_iGlowType <FIELD_INTEGER>
Input keys
m_iInitialTeamNum <FIELD_INTEGER> (TeamNum)
Since
Left 4 Dead
m_fadeMinDist <FIELD_INTEGER> (fademindist)
m_fadeMaxDist <FIELD_INTEGER> (fademaxdist)
Input functions
SetTeam <FIELD_INTEGER> linked function: InputSetTeam
Kill <FIELD_VOID> linked function: InputKill
KillHierarchy <FIELD_VOID> linked function: InputKillHierarchy
Use <FIELD_VOID> linked function: InputUse
Alpha <FIELD_INTEGER> linked function: InputAlpha
AlternativeSorting <FIELD_BOOLEAN> linked function: InputAlternativeSorting
Color <FIELD_COLOR32> linked function: InputColor
SetParent <FIELD_STRING> linked function: InputSetParent
SetParentAttachment <FIELD_STRING> linked function: InputSetParentAttachment
SetParentAttachmentMaintainOffset <FIELD_STRING> linked function: InputSetParentAttachmentMaintainOffset
ClearParent <FIELD_VOID> linked function: InputClearParent
SetDamageFilter <FIELD_STRING> linked function: InputSetDamageFilter
EnableDamageForces <FIELD_VOID> linked function: InputEnableDamageForces
DisableDamageForces <FIELD_VOID> linked function: InputDisableDamageForces
DispatchEffect (removed since ) <FIELD_STRING> linked function: InputDispatchEffect
DispatchResponse <FIELD_STRING> linked function: InputDispatchResponse
AddContext <FIELD_STRING> linked function: InputAddContext
RemoveContext <FIELD_STRING> linked function: InputRemoveContext
ClearContext <FIELD_STRING> linked function: InputClearContext
DisableShadow <FIELD_VOID> linked function: InputDisableShadow
EnableShadow <FIELD_VOID> linked function: InputEnableShadow
AddOutput <FIELD_STRING> linked function: InputAddOutput
FireUser1 <FIELD_STRING> linked function: InputFireUser1
FireUser2 <FIELD_STRING> linked function: InputFireUser2
FireUser3 <FIELD_STRING> linked function: InputFireUser3
FireUser4 <FIELD_STRING> linked function: InputFireUser4
In
Portal 2
SetLocalOrigin <FIELD_VECTOR> linked function: InputSetLocalOrigin
SetLocalAngles <FIELD_VECTOR> linked function: InputSetLocalAngles
DisableDraw <FIELD_VOID> linked function: InputDisableDraw
EnableDraw <FIELD_VOID> linked function: InputEnableDraw
DisableReceivingFlashlight <FIELD_VOID> linked function: InputDisableReceivingFlashlight
EnableReceivingFlashlight <FIELD_VOID> linked function: InputEnableReceivingFlashlight
DisableDrawInFastReflection <FIELD_VOID> linked function: InputDisableDrawInFastReflection
EnableDrawInFastReflection <FIELD_VOID> linked function: InputEnableDrawInFastReflection
RemovePaint <FIELD_VOID> linked function: InputRemovePaint
Since
Left 4 Dead 2 and also in
Team Fortress 2
RunScriptFile <FIELD_STRING> linked function: InputRunScriptFile
- description todo
RunScriptCode <FIELD_STRING> linked function: InputRunScript
- description todo
CallScriptFunction <FIELD_STRING> linked function: InputCallScriptFunction
- description todo
TerminateScriptScope <FIELD_VOID> linked function: InputTerminateScriptScope (only in )
- description todo
Keyvalues

- rendercolor / rendercolor32 <color>
- Converts rgb string into a single integer and sets m_clrRender
- renderamt <integer>
- Sets alpha portion of m_clrRender (last 8 bits)
- disableshadows <boolean>
- If non 0 adds EF_NOSHADOW flag to m_fEffects
- mins / maxs <vector>
- Sets m_Collision.m_vecMins/m_Collision.m_vecMaxs (also model scale related checks if CBaseAnimating) and recalculates m_Collision.m_flRadius if needed
- disablereceiveshadows <boolean>
- If non 0 adds EF_NORECEIVESHADOW flag to m_fEffects
- nodamageforces <boolean>
- If non 0 adds EFL_NO_DAMAGE_FORCES flag to m_iEFlags
- angle <float>
- Supposed to be single value seting yaw but due to mistake in code causes infinite recursion and crashes the game
- angles <angle>
- Sets angles (has parenting related checks[Elaborate?])
- origin <vector>
- Sets origin (has parenting related checks[Elaborate?])
- targetname <string>
- Sets m_iName (calls AllocPooledString to put/get it in/from game string table)
- <anything else> <any>
- Tries finding the key among keyfields and set appropriate field
Outputs
- OnUser1 / OnUser4
- Fired as response to FireUser1 / FireUser4
- OnKilled
- Fired when
DEFINE_PHYSPTR
m_pPhysicsObject <FIELD?>
DEFINE_UTLVECTOR
m_ResponseContexts <FIELD?>
DEFINE_CUSTOM_FIELD
m_aThinkFunctions <FIELD?>
Function
- SUB_Remove
- SUB_DoNothing
- SUB_StartFadeOut
- SUB_StartFadeOutInstant
- SUB_FadeOut
- SUB_Vanish
- SUB_CallUseToggle
Think functions
- ShadowCastDistThink
(in all games since
) - ScriptThink - handles vscript thinkfunction
- FrictionRevertThink
To get the class name of an entity, use
entity->edict()->GetClassName();
Asserts
Client
Problem:
// Model could not be found
Assert( !"Model could not be found, index is -1" );
Solution:
- Check your model name three times.
- Precache your model on both server and client.