CBaseEntity

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

Keyvalues / Inputs / Outputs
- For keyvalues see Keyfields ↓ and Keyvalues ↓
- For inputs see Input keys ↓ and Input functions ↓
- For outputs see Outputs ↓
Fields
m_iName <FIELD_STRING>
- Name other entities use to refer to this entity (vscript GetName() returns this)
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>
- Set by commands like ent_text, ent_bbox, see Entity debugging ↓
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>
<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>
<span id="(only in ) m_nModelIndexOverrides>(only in
) m_nModelIndexOverrides[4] <FIELD_INTEGER>
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>
- Radius of a sphere around our AABB Todo: see this image and describe with better wording
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>
Keyfield since
Alien Swarm and also in
Team Fortress 2
m_iTeamNum <FIELD_INTEGER> (teamnumber)
m_CollisionGroup <FIELD_INTEGER> (CollisionGroup)
- Sets a collision group for this entity, which changes its collision behavior.
|
m_MoveType <FIELD_CHARACTER> (MoveType)
- Sets a movetype for this entity, which changes its movement behavior.
|
Keyfields
m_iClassname <FIELD_STRING> (classname)
m_iGlobalname <FIELD_STRING> (globalname)
- When the player transitions to a new map, entities in the new map with matching globalnames will have their previous map's states copied over to it.
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)
- Combination of effect flags to use.
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)
- Health cannot exceed this value. This keyvalue applies to only specific entities.
m_iHealth <FIELD_INTEGER> (health)
- Current health of an entity. This keyvalue applies to only specific entities.
m_target <FIELD_STRING> (target)
m_iszDamageFilterName <FIELD_STRING> (damagefilter)
- Name of a filter that controls which entities can damage this entity.
m_flShadowCastDistance <FIELD_FLOAT> (shadowcastdist)
- Sets how far the entity casts dynamic shadows. 0 means default distance from the shadow_control entity.
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)
- If this entity should automatically be given the 'Disable' input on the Xbox 360 version of Source.
m_bGlowBackfaceMult <FIELD? 4bytes> (glowbackfacemult)
- If this object has a glow effect, multiply the effect by this much on the sides of the object that are facing away from the viewer. Todo: more testing what this does
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)
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
- Turns off rendering of this entity in reflections when using
$reflectonlymarkedentities
in water material.
EnableDrawInFastReflection <FIELD_VOID> linked function: InputEnableDrawInFastReflection
- Turn on rendering of this entity in reflections when using
$reflectonlymarkedentities
in water material.
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 first 24 bits of 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 entity is killed
Other
DEFINE_PHYSPTR
m_pPhysicsObject <FIELD?>
DEFINE_UTLVECTOR
m_ResponseContexts <FIELD_EMBEDDED>
DEFINE_CUSTOM_FIELD
m_aThinkFunctions <FIELD?>
Functions
m_pfnThink <FIELD_FUNCTION>
m_pfnTouch <FIELD_FUNCTION>
m_pfnUse <FIELD_FUNCTION>
m_pfnBlocked <FIELD_FUNCTION>
m_pfnMoveDone <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
Entity debugging
Changing m_debugOverlays
shows various debug overlays when developer mode is active.
- OVERLAY_TEXT_BIT : [1]
- Added by ent_text
- OVERLAY_NAME_BIT : [2]
- Added by ent_name
- OVERLAY_BBOX_BIT : [4]
- Added by ent_bbox (bounding box overlay for this entity)
- OVERLAY_PIVOT_BIT : [8]
- Added by ent_pivot (show pivot for this entity)
- OVERLAY_MESSAGE_BIT : [16]
- Added by ent_messages (show messages for this entity)
- OVERLAY_ABSBOX_BIT : [32]
- Added by ent_absbox (show abs bounding box overlay)
- OVERLAY_RBOX_BIT : [64]
- Added by ent_rbox
- OVERLAY_SHOW_BLOCKSLOS : [128]
- See ai_debug_los (show entities that block NPC LOS)
- OVERLAY_ATTACHMENTS_BIT : [256]
- Added by ent_attachments (show attachment points)
- OVERLAY_AUTOAIM_BIT : [512]
- Added by ent_autoaim (Display autoaim radius)
- OVERLAY_VIEWOFFSET : [1073741824]
- Added by ent_viewoffset (show view offset)
ent_text

m_debugOverlays
and if dev mode is active those overlays will be drawn- GetDebugName() - for entities returns
m_iName
if not empty otherwisem_iClassname
- entindex() - returns entity index (0 if entity is derived from CServerOnlyEntity
(<entindex()>) Name: <GetDebugName()> (<m_iClassname>)
GLOBALNAME: m_iGlobalname <!-- if m_iGlobalname not empty then this line is present -->
Position: <%0.1f, %0.1f, %0.1f, m_vecAbsOrigin.x, m_vecAbsOrigin.y, m_vecAbsOrigin.z>
Model:<m_ModelName> <!-- if m_ModelName not empty or this entity is derived from CBaseAnimating then this line is present -->
DAMAGE FILTER:<m_hDamageFilter->GetDebugName()> <!-- if m_hDamageFilter is not null then this line is present and its debug name is shown -->
ent_viewoffset
Draws red cross at EyePosition(). Eye position is m_vecAbsOrigin + m_vecViewOffset
NDebugOverlay::Cross3D( EyePosition(), 16, 255, 0, 0, true, 0.05f )
ent_name
Show just the debug name (GetDebugName())
ent_bbox
Orange color. Draws bounding box via if we are an edict (not derived from CServerOnlyEntity) CBaseEntity::DrawBBoxOverlay
ent_absbox
Green color. Draws absolute bounding box if we are not an edict. (If non sleeping vphysics object the color is brighter green) CBaseEntity::DrawBBoxOverlay
ent_pivot
If we are an edict draws pivote at m_vecAbsOrigin with rotation of GetAbsAngles()
NDebugOverlay::Axis( GetAbsOrigin(), GetAbsAngles(), 20, true, 0 );
ent_rbox
DrawRBoxOverlay() - draws nothing, assuming rbox stands for render box it makes sense because render boxes would be client side thing and those can be shown by r_drawrenderboxes or cl_ent_rbox
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.