CBasePlayerController (client)
Base class for all player controller entities in Source 2. A controller is the persistent, session-level entity that represents a connected client; it is never recreated between rounds. The controller owns one or more pawn entities (the physical in-world representation).
CS2 build 25218825 · Steam date 2026-09-09 · platform windows-x86_64 · cs2_schema.json
Kind: classSize: 2040 bytes (0x7f8)Alignment: 8 bytesModule: clientBinary: client.dll
Relationships
Inherits from: C_BaseEntity
Same name in another module: CBasePlayerController (server)
Derived by: CCSPlayerController
Used by (4) as a field type
Inheritance tree
CEntityInstance entity2
C_BaseEntity
CBasePlayerController
Relationship diagram (5 edges)
classDiagram
CEntityInstance <|-- C_BaseEntity
C_BaseEntity <|-- CBasePlayerController
CBasePlayerController <|-- CCSPlayerController
CBasePlayerController *-- C_CommandContext
CBasePlayerController --> C_BasePlayerPawnMemory layout
102 fields, 17 declared here and 85 inherited. Offsets are absolute from the object base on windows-x86_64.
CEntityInstanceC_BaseEntityCBasePlayerController
| Offset | Field | Type | From | Annotations |
|---|---|---|---|---|
0x8 | m_iszPrivateVScripts | CUtlSymbolLarge | CEntityInstance | |
0x10 | m_pEntity | CEntityIdentity* | CEntityInstance | CEntityIdentity pointer: the entity's identity record (name, class, handle, flags). |
0x28 | m_CScriptComponent | CScriptComponent* | CEntityInstance | VScript component attached to the entity, when scripted. |
0x30 | m_CBodyComponent | CBodyComponent* | C_BaseEntity | |
0x38 | m_NetworkTransmitComponent | CNetworkTransmitComponent | C_BaseEntity | MNotSaved |
0x328 | m_nLastThinkTick | GameTick_t | C_BaseEntity | MNotSaved |
0x330 | m_pGameSceneNode | CGameSceneNode* | C_BaseEntity | MNotSaved |
0x338 | m_pRenderComponent | CRenderComponent* | C_BaseEntity | MNotSaved |
0x340 | m_pCollision | CCollisionProperty* | C_BaseEntity | MNotSaved |
0x348 | m_iMaxHealth | int32 | C_BaseEntity | MNotSaved |
0x34c | m_iHealth | int32 | C_BaseEntity | |
0x350 | m_flDamageAccumulator | float32 | C_BaseEntity | MNotSaved |
0x354 | m_lifeState | uint8 | C_BaseEntity | MNotSaved |
0x355 | m_bTakesDamage | bool | C_BaseEntity | MNotSaved |
0x358 | m_nTakeDamageFlags | TakeDamageFlags_t | C_BaseEntity | MNotSaved |
0x360 | m_nPlatformType | EntityPlatformTypes_t | C_BaseEntity | |
0x361 | m_ubInterpolationFrame | uint8 | C_BaseEntity | MNotSaved |
0x364 | m_hSceneObjectController | CHandle< C_BaseEntity > | C_BaseEntity | |
0x368 | m_nNoInterpolationTick | int32 | C_BaseEntity | MNotSaved |
0x36c | m_nVisibilityNoInterpolationTick | int32 | C_BaseEntity | MNotSaved |
0x370 | m_flProxyRandomValue | float32 | C_BaseEntity | MNotSaved |
0x374 | m_iEFlags | int32 | C_BaseEntity | MNotSaved |
0x378 | m_nWaterType | uint8 | C_BaseEntity | MNotSaved |
0x379 | m_bInterpolateEvenWithNoModel | bool | C_BaseEntity | MNotSaved |
0x37a | m_bPredictionEligible | bool | C_BaseEntity | MNotSaved |
0x37b | m_bApplyLayerMatchIDToModel | bool | C_BaseEntity | MNotSaved |
0x37c | m_tokLayerMatchID | CUtlStringToken | C_BaseEntity | MNotSaved |
0x380 | m_nSubclassID | CUtlStringToken | C_BaseEntity | |
0x390 | m_nSimulationTick | int32 | C_BaseEntity | MNotSaved |
0x394 | m_iCurrentThinkContext | int32 | C_BaseEntity | MNotSaved |
0x398 | m_aThinkFunctions | CUtlVector< thinkfunc_t > | C_BaseEntity | MNotSaved |
0x3b0 | m_bDisabledContextThinks | bool | C_BaseEntity | |
0x3b4 | m_flAnimTime | float32 | C_BaseEntity | MNotSaved |
0x3b8 | m_flSimulationTime | float32 | C_BaseEntity | MNotSaved |
0x3bc | m_nSceneObjectOverrideFlags | uint8 | C_BaseEntity | |
0x3bd | m_bHasSuccessfullyInterpolated | bool | C_BaseEntity | MNotSaved |
0x3be | m_bHasAddedVarsToInterpolation | bool | C_BaseEntity | MNotSaved |
0x3bf | m_bRenderEvenWhenNotSuccessfullyInterpolated | bool | C_BaseEntity | MNotSaved |
0x3c0 | m_nInterpolationLatchDirtyFlags | int32[2] | C_BaseEntity | MNotSaved |
0x3c8 | m_ListEntry | uint16[11] | C_BaseEntity | MNotSaved |
0x3e0 | m_flCreateTime | GameTime_t | C_BaseEntity | MNotSaved |
0x3e4 | m_EntClientFlags | uint16 | C_BaseEntity | MNotSaved |
0x3e6 | m_bClientSideRagdoll | bool | C_BaseEntity | MNotSaved |
0x3e7 | m_iTeamNum | uint8 | C_BaseEntity | MNotSaved |
0x3e8 | m_spawnflags | uint32 | C_BaseEntity | |
0x3ec | m_nNextThinkTick | GameTick_t | C_BaseEntity | MNotSaved |
0x3f4 | m_fFlags | uint32 | C_BaseEntity | MSaveBehavior |
0x3f8 | m_vecAbsVelocity | Vector | C_BaseEntity | MNotSaved |
0x404 | m_vecServerVelocity | CNetworkVelocityVector | C_BaseEntity | MNotSaved |
0x430 | m_vecVelocity | CNetworkVelocityVector | C_BaseEntity | |
0x510 | m_vecBaseVelocity | Vector | C_BaseEntity | MNotSaved |
0x51c | m_hEffectEntity | CHandle< C_BaseEntity > | C_BaseEntity | MNotSaved |
0x520 | m_hOwnerEntity | CHandle< C_BaseEntity > | C_BaseEntity | |
0x524 | m_MoveCollide | MoveCollide_t | C_BaseEntity | MNotSaved |
0x525 | m_MoveType | MoveType_t | C_BaseEntity | |
0x526 | m_nActualMoveType | MoveType_t | C_BaseEntity | |
0x528 | m_flWaterLevel | float32 | C_BaseEntity | MNotSaved |
0x52c | m_fEffects | uint32 | C_BaseEntity | MNotSaved |
0x530 | m_hGroundEntity | CHandle< C_BaseEntity > | C_BaseEntity | MNotSaved |
0x534 | m_nGroundBodyIndex | int32 | C_BaseEntity | MNotSaved |
0x538 | m_flFriction | float32 | C_BaseEntity | MNotSaved |
0x53c | m_flElasticity | float32 | C_BaseEntity | MNotSaved |
0x540 | m_flGravityScale | float32 | C_BaseEntity | MNotSaved |
0x544 | m_flTimeScale | float32 | C_BaseEntity | MNotSaved |
0x548 | m_bAnimatedEveryTick | bool | C_BaseEntity | MNotSaved |
0x549 | m_bGravityDisabled | bool | C_BaseEntity | |
0x54c | m_flNavIgnoreUntilTime | GameTime_t | C_BaseEntity | MNotSaved |
0x550 | m_hThink | uint16 | C_BaseEntity | MNotSaved |
0x560 | m_fBBoxVisFlags | uint8 | C_BaseEntity | MNotSaved |
0x564 | m_flActualGravityScale | float32 | C_BaseEntity | |
0x568 | m_bGravityActuallyDisabled | bool | C_BaseEntity | |
0x569 | m_bPredictable | bool | C_BaseEntity | MNotSaved |
0x56a | m_bRenderWithViewModels | bool | C_BaseEntity | |
0x56c | m_nFirstPredictableCommand | int32 | C_BaseEntity | MNotSaved |
0x570 | m_nLastPredictableCommand | int32 | C_BaseEntity | MNotSaved |
0x574 | m_hOldMoveParent | CHandle< C_BaseEntity > | C_BaseEntity | MNotSaved |
0x578 | m_Particles | CParticleProperty | C_BaseEntity | MNotSaved |
0x5a8 | m_vecAngVelocity | QAngle | C_BaseEntity | |
0x5b4 | m_DataChangeEventRef | int32 | C_BaseEntity | MNotSaved |
0x5b8 | m_dependencies | CUtlVector< CEntityHandle > | C_BaseEntity | MNotSaved |
0x5d0 | m_nCreationTick | int32 | C_BaseEntity | MNotSaved |
0x5e1 | m_bAnimTimeChanged | bool | C_BaseEntity | MNotSaved |
0x5e2 | m_bSimulationTimeChanged | bool | C_BaseEntity | MNotSaved |
0x5f0 | m_sUniqueHammerID | CUtlString | C_BaseEntity | MNotSaved |
0x5f8 | m_nBloodType | BloodType | C_BaseEntity | |
0x608 | m_CommandContext | C_CommandContext | MNotSaved | |
0x6b0 | m_nInButtonsWhichAreToggles | uint64 | MNotSaved | |
0x6b8 | m_nTickBase | uint32 | Server tick number at the time of the most-recent usercmd from this client. MNotSaved | |
0x6bc | m_hPawn | CHandle< C_BasePlayerPawn > | CHandle to the base pawn currently controlled by this controller. | |
0x6c0 | m_bKnownTeamMismatch | bool | ||
0x6c4 | m_hPredictedPawn | CHandle< C_BasePlayerPawn > | MNotSaved | |
0x6c8 | m_nSplitScreenSlot | CSplitScreenSlot | MNotSaved | |
0x6cc | m_hSplitOwner | CHandle< CBasePlayerController > | MNotSaved | |
0x6d0 | m_hSplitScreenPlayers | CUtlVector< CHandle< CBasePlayerController > > | MNotSaved | |
0x6e8 | m_bIsHLTV | bool | ||
0x6ec | m_iConnected | PlayerConnectedState | PlayerConnectedState enum – 0 = Disconnected, 1 = Connected, 2 = Connecting. MNotSaved | |
0x6f0 | m_iMostConnected | PlayerConnectedState | MNotSaved | |
0x6f4 | m_iszPlayerName | char[128] | Display name of the player, as reported by Steam (up to 128 bytes, UTF-8). MNotSaved | |
0x780 | m_steamID | uint64 | 64-bit Steam account ID (SteamID64) of the connected client. MNotSaved | |
0x788 | m_bIsLocalPlayerController | bool | MNotSaved | |
0x789 | m_bNoClipEnabled | bool | True when sv_cheats noclip is active for this player. | |
0x78c | m_iDesiredFOV | uint32 | Field-of-view override requested by the player (0 = use server default). |