Skip to content

PluginEntity Layout#

The PluginEntity struct is packed (#pragma pack(push, 1)) and matches the host's binary layout. The Entity class wraps this struct — you don't normally access it directly.

Byte Layout#

Offset Size Type Field
0 4 uint32_t id
4 8 uint64_t heroId
12 4 uint32_t entityType
16 4 uint32_t team
20 12 Vector3 position
32 12 Vector3 velocity
44 12 Vector3 rotation
56 4 float health
60 4 float maxHealth
64 4 float armor
68 4 float barrier
72 1 uint8_t alive
73 1 uint8_t visible
74 1 uint8_t isLocalPlayer
75 1 uint8_t isInvulnerable
76 4 float ultCharge
80 1 uint8_t ultActive
81 8 Vector2 skill1Active
89 8 Vector2 skill2Active
97 8 Vector2 skill3Active
105 12 Vector3 delta1
117 12 Vector3 delta2
129 4 float nametagYPos

Total size: 133 bytes

Field Details#

Identity#

Field Description
id Unique entity ID
heroId Hero pool ID (compare with HeroId:: constants)
entityType See EntityType enum (Hero, Turret, Bot, etc.)
team See Team enum (Red, Blue, Deathmatch, etc.)

Spatial#

Field Description
position Root (feet) world position
velocity Movement velocity vector
rotation Euler rotation (yaw, pitch, roll)

Health#

Field Description
health Current health
maxHealth Maximum health
armor Current armor
barrier Current barrier (shields)

State Flags#

Field Description
alive 1 if alive, 0 if dead
visible 1 if visible (not occluded), 0 if behind a wall
isLocalPlayer 1 if this is the local player
isInvulnerable 1 if currently invulnerable

Abilities#

Field Description
ultCharge Ultimate charge percentage (0.0 - 100.0), local player only
ultActive 1 if ultimate is currently active
skill1Active .x = 1.0 if Skill 1 (Shift) active, 0.0 otherwise
skill2Active .x = 1.0 if Skill 2 (E) active, 0.0 otherwise
skill3Active .x = 1.0 if Skill 3 active, 0.0 otherwise

Bounds#

Field Description
delta1 AABB minimum in local space
delta2 AABB maximum in local space
nametagYPos Y position offset for the entity's nametag

Struct Definition#

#pragma pack(push, 1)
struct PluginEntity
{
    uint32_t id;
    uint64_t heroId;
    uint32_t entityType;
    uint32_t team;
    Vector3 position;
    Vector3 velocity;
    Vector3 rotation;
    float health;
    float maxHealth;
    float armor;
    float barrier;
    uint8_t alive;
    uint8_t visible;
    uint8_t isLocalPlayer;
    uint8_t isInvulnerable;
    float ultCharge;
    uint8_t ultActive;
    Vector2 skill1Active;
    Vector2 skill2Active;
    Vector2 skill3Active;
    Vector3 delta1;     // AABB min (local space)
    Vector3 delta2;     // AABB max (local space)
    float nametagYPos;
};
#pragma pack(pop)

See Also#