MovementBlock
Client Version 1.12
Wowm Representation
Autogenerated from wowm
file at wow_message_parser/wowm/world/gameobject/smsg_update_object.wowm:83
.
struct MovementBlock {
UpdateFlag update_flag;
if (update_flag & LIVING) {
MovementFlags flags;
u32 timestamp;
Vector3d living_position;
f32 living_orientation;
if (flags & ON_TRANSPORT) {
PackedGuid transport_guid;
Vector3d transport_position;
f32 transport_orientation;
}
if (flags & SWIMMING) {
f32 pitch;
}
f32 fall_time;
if (flags & JUMPING) {
f32 z_speed;
f32 cos_angle;
f32 sin_angle;
f32 xy_speed;
}
if (flags & SPLINE_ELEVATION) {
f32 spline_elevation;
}
f32 walking_speed;
f32 running_speed;
f32 backwards_running_speed;
f32 swimming_speed;
f32 backwards_swimming_speed;
f32 turn_rate;
if (flags & SPLINE_ENABLED) {
SplineFlag spline_flags;
if (spline_flags & FINAL_ANGLE) {
f32 angle;
}
else if (spline_flags & FINAL_TARGET) {
u64 target;
}
else if (spline_flags & FINAL_POINT) {
Vector3d spline_final_point;
}
u32 time_passed;
u32 duration;
u32 id;
u32 amount_of_nodes;
Vector3d[amount_of_nodes] nodes;
Vector3d final_node;
}
}
else if (update_flag & HAS_POSITION) {
Vector3d position;
f32 orientation;
}
if (update_flag & HIGH_GUID) {
u32 unknown0;
}
if (update_flag & ALL) {
u32 unknown1;
}
if (update_flag & MELEE_ATTACKING) {
PackedGuid guid;
}
if (update_flag & TRANSPORT) {
u32 transport_progress_in_ms;
}
}
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 1 / - | UpdateFlag | update_flag |
If update_flag contains LIVING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 4 / - | MovementFlags | flags | |
0x05 | 4 / Little | u32 | timestamp | |
0x09 | 12 / - | Vector3d | living_position | |
0x15 | 4 / Little | f32 | living_orientation |
If flags contains ON_TRANSPORT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x19 | - / - | PackedGuid | transport_guid | |
- | 12 / - | Vector3d | transport_position | |
- | 4 / Little | f32 | transport_orientation |
If flags contains SWIMMING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | pitch | |
- | 4 / Little | f32 | fall_time |
If flags contains JUMPING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | z_speed | |
- | 4 / Little | f32 | cos_angle | |
- | 4 / Little | f32 | sin_angle | |
- | 4 / Little | f32 | xy_speed |
If flags contains SPLINE_ELEVATION
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | spline_elevation | |
- | 4 / Little | f32 | walking_speed | |
- | 4 / Little | f32 | running_speed | |
- | 4 / Little | f32 | backwards_running_speed | |
- | 4 / Little | f32 | swimming_speed | |
- | 4 / Little | f32 | backwards_swimming_speed | |
- | 4 / Little | f32 | turn_rate |
If flags contains SPLINE_ENABLED
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / - | SplineFlag | spline_flags |
If spline_flags contains FINAL_ANGLE
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | angle |
Else If spline_flags contains FINAL_TARGET
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 8 / Little | u64 | target |
Else If spline_flags contains FINAL_POINT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 12 / - | Vector3d | spline_final_point | |
- | 4 / Little | u32 | time_passed | |
- | 4 / Little | u32 | duration | |
- | 4 / Little | u32 | id | |
- | 4 / Little | u32 | amount_of_nodes | |
- | ? / - | Vector3d[amount_of_nodes] | nodes | |
- | 12 / - | Vector3d | final_node |
Else If update_flag contains HAS_POSITION
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 12 / - | Vector3d | position | |
- | 4 / Little | f32 | orientation |
If update_flag contains HIGH_GUID
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | u32 | unknown0 | vmangos statically sets to 0 |
If update_flag contains ALL
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | u32 | unknown1 | vmangos sets statically to 1 |
If update_flag contains MELEE_ATTACKING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | - / - | PackedGuid | guid |
If update_flag contains TRANSPORT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | u32 | transport_progress_in_ms |
Used in:
Client Version 2.4.3
Wowm Representation
Autogenerated from wowm
file at wow_message_parser/wowm/world/gameobject/smsg_update_object_2_4_3.wowm:14
.
struct MovementBlock {
UpdateFlag update_flag;
if (update_flag & LIVING) {
MovementFlags flags;
u8 extra_flags;
u32 timestamp;
Vector3d living_position;
f32 living_orientation;
if (flags & ON_TRANSPORT) {
TransportInfo transport;
}
if (flags & SWIMMING) {
f32 pitch1;
}
else if (flags & ONTRANSPORT) {
f32 pitch2;
}
f32 fall_time;
if (flags & JUMPING) {
f32 z_speed;
f32 cos_angle;
f32 sin_angle;
f32 xy_speed;
}
if (flags & SPLINE_ELEVATION) {
f32 spline_elevation;
}
f32 walking_speed;
f32 running_speed;
f32 backwards_running_speed;
f32 swimming_speed;
f32 flying_speed;
f32 backwards_flying_speed;
f32 backwards_swimming_speed;
f32 turn_rate;
if (flags & SPLINE_ENABLED) {
SplineFlag spline_flags;
if (spline_flags & FINAL_ANGLE) {
f32 angle;
}
else if (spline_flags & FINAL_TARGET) {
Guid target;
}
else if (spline_flags & FINAL_POINT) {
Vector3d spline_final_point;
}
u32 time_passed;
u32 duration;
u32 id;
u32 amount_of_nodes;
Vector3d[amount_of_nodes] nodes;
Vector3d final_node;
}
}
else if (update_flag & HAS_POSITION) {
Vector3d position;
f32 orientation;
}
if (update_flag & HIGH_GUID) {
u32 unknown0;
u32 unknown1;
}
if (update_flag & ALL) {
u32 unknown2;
}
if (update_flag & MELEE_ATTACKING) {
PackedGuid guid;
}
if (update_flag & TRANSPORT) {
u32 transport_progress_in_ms;
}
}
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 1 / - | UpdateFlag | update_flag |
If update_flag contains LIVING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x01 | 4 / - | MovementFlags | flags | |
0x05 | 1 / - | u8 | extra_flags | |
0x06 | 4 / Little | u32 | timestamp | |
0x0A | 12 / - | Vector3d | living_position | |
0x16 | 4 / Little | f32 | living_orientation |
If flags contains ON_TRANSPORT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x1A | - / - | TransportInfo | transport |
If flags contains SWIMMING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | pitch1 |
Else If flags contains ONTRANSPORT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | pitch2 | |
- | 4 / Little | f32 | fall_time |
If flags contains JUMPING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | z_speed | |
- | 4 / Little | f32 | cos_angle | |
- | 4 / Little | f32 | sin_angle | |
- | 4 / Little | f32 | xy_speed |
If flags contains SPLINE_ELEVATION
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | spline_elevation | |
- | 4 / Little | f32 | walking_speed | |
- | 4 / Little | f32 | running_speed | |
- | 4 / Little | f32 | backwards_running_speed | |
- | 4 / Little | f32 | swimming_speed | |
- | 4 / Little | f32 | flying_speed | |
- | 4 / Little | f32 | backwards_flying_speed | |
- | 4 / Little | f32 | backwards_swimming_speed | |
- | 4 / Little | f32 | turn_rate |
If flags contains SPLINE_ENABLED
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / - | SplineFlag | spline_flags |
If spline_flags contains FINAL_ANGLE
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | angle |
Else If spline_flags contains FINAL_TARGET
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 8 / Little | Guid | target |
Else If spline_flags contains FINAL_POINT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 12 / - | Vector3d | spline_final_point | |
- | 4 / Little | u32 | time_passed | |
- | 4 / Little | u32 | duration | |
- | 4 / Little | u32 | id | |
- | 4 / Little | u32 | amount_of_nodes | |
- | ? / - | Vector3d[amount_of_nodes] | nodes | |
- | 12 / - | Vector3d | final_node |
Else If update_flag contains HAS_POSITION
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 12 / - | Vector3d | position | |
- | 4 / Little | f32 | orientation |
If update_flag contains HIGH_GUID
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | u32 | unknown0 | vmangos statically sets to 0 |
- | 4 / Little | u32 | unknown1 |
If update_flag contains ALL
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | u32 | unknown2 | vmangos sets statically to 1 |
If update_flag contains MELEE_ATTACKING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | - / - | PackedGuid | guid |
If update_flag contains TRANSPORT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | u32 | transport_progress_in_ms |
Used in:
Client Version 3.3.5
Wowm Representation
Autogenerated from wowm
file at wow_message_parser/wowm/world/gameobject/smsg_update_object_3_3_5.wowm:80
.
struct MovementBlock {
UpdateFlag update_flag;
if (update_flag & LIVING) {
MovementFlags flags;
u32 timestamp;
Vector3d position;
f32 orientation;
if (flags & ON_TRANSPORT_AND_INTERPOLATED_MOVEMENT) {
TransportInfo transport_info;
u32 transport_time;
}
else if (flags & ON_TRANSPORT) {
TransportInfo transport;
}
if (flags & SWIMMING) {
f32 pitch1;
}
else if (flags & FLYING) {
f32 pitch2;
}
else if (flags & ALWAYS_ALLOW_PITCHING) {
f32 pitch3;
}
f32 fall_time;
if (flags & FALLING) {
f32 z_speed;
f32 cos_angle;
f32 sin_angle;
f32 xy_speed;
}
if (flags & SPLINE_ELEVATION) {
f32 spline_elevation;
}
f32 walking_speed;
f32 running_speed;
f32 backwards_running_speed;
f32 swimming_speed;
f32 backwards_swimming_speed;
f32 flight_speed;
f32 backwards_flight_speed;
f32 turn_rate;
f32 pitch_rate;
if (flags & SPLINE_ENABLED) {
SplineFlag spline_flags;
if (spline_flags & FINAL_ANGLE) {
f32 angle;
}
else if (spline_flags & FINAL_TARGET) {
u64 target;
}
else if (spline_flags & FINAL_POINT) {
Vector3d spline_final_point;
}
u32 time_passed;
u32 duration;
u32 id;
u32 amount_of_nodes;
Vector3d[amount_of_nodes] nodes;
Vector3d final_node;
}
}
else if (update_flag & POSITION) {
PackedGuid transport_guid;
Vector3d position1;
f32 orientation1;
f32 corpse_orientation;
}
else if (update_flag & HAS_POSITION) {
Vector3d position2;
f32 orientation2;
}
if (update_flag & HIGH_GUID) {
u32 unknown0;
}
if (update_flag & LOW_GUID) {
u32 unknown1;
}
if (update_flag & HAS_ATTACKING_TARGET) {
PackedGuid guid;
}
if (update_flag & TRANSPORT) {
u32 transport_progress_in_ms;
}
if (update_flag & VEHICLE) {
u32 vehicle_id;
f32 vehicle_orientation;
}
if (update_flag & ROTATION) {
u64 packed_local_rotation;
}
}
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x00 | 2 / - | UpdateFlag | update_flag |
If update_flag contains LIVING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x02 | 6 / - | MovementFlags | flags | |
0x08 | 4 / Little | u32 | timestamp | |
0x0C | 12 / - | Vector3d | position | |
0x18 | 4 / Little | f32 | orientation |
If flags contains ON_TRANSPORT_AND_INTERPOLATED_MOVEMENT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x1C | - / - | TransportInfo | transport_info | |
- | 4 / Little | u32 | transport_time |
Else If flags contains ON_TRANSPORT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | - / - | TransportInfo | transport |
If flags contains SWIMMING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | pitch1 |
Else If flags contains FLYING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | pitch2 |
Else If flags contains ALWAYS_ALLOW_PITCHING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | pitch3 | |
- | 4 / Little | f32 | fall_time |
If flags contains FALLING
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | z_speed | |
- | 4 / Little | f32 | cos_angle | |
- | 4 / Little | f32 | sin_angle | |
- | 4 / Little | f32 | xy_speed |
If flags contains SPLINE_ELEVATION
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | spline_elevation | |
- | 4 / Little | f32 | walking_speed | |
- | 4 / Little | f32 | running_speed | |
- | 4 / Little | f32 | backwards_running_speed | |
- | 4 / Little | f32 | swimming_speed | |
- | 4 / Little | f32 | backwards_swimming_speed | |
- | 4 / Little | f32 | flight_speed | |
- | 4 / Little | f32 | backwards_flight_speed | |
- | 4 / Little | f32 | turn_rate | |
- | 4 / Little | f32 | pitch_rate |
If flags contains SPLINE_ENABLED
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / - | SplineFlag | spline_flags |
If spline_flags contains FINAL_ANGLE
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | f32 | angle |
Else If spline_flags contains FINAL_TARGET
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 8 / Little | u64 | target |
Else If spline_flags contains FINAL_POINT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 12 / - | Vector3d | spline_final_point | |
- | 4 / Little | u32 | time_passed | |
- | 4 / Little | u32 | duration | |
- | 4 / Little | u32 | id | |
- | 4 / Little | u32 | amount_of_nodes | |
- | ? / - | Vector3d[amount_of_nodes] | nodes | |
- | 12 / - | Vector3d | final_node |
Else If update_flag contains POSITION
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | - / - | PackedGuid | transport_guid | |
- | 12 / - | Vector3d | position1 | |
- | 4 / Little | f32 | orientation1 | |
- | 4 / Little | f32 | corpse_orientation |
Else If update_flag contains HAS_POSITION
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 12 / - | Vector3d | position2 | |
- | 4 / Little | f32 | orientation2 |
If update_flag contains HIGH_GUID
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | u32 | unknown0 | vmangos statically sets to 0 |
If update_flag contains LOW_GUID
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | u32 | unknown1 |
If update_flag contains HAS_ATTACKING_TARGET
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | - / - | PackedGuid | guid |
If update_flag contains TRANSPORT
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | u32 | transport_progress_in_ms |
If update_flag contains VEHICLE
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | u32 | vehicle_id | |
- | 4 / Little | f32 | vehicle_orientation |
If update_flag contains ROTATION
:
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 8 / Little | u64 | packed_local_rotation | AzerothCore deliberately casts to i64 |
Used in: