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

OffsetSize / EndiannessTypeNameComment
0x001 / -UpdateFlagupdate_flag

If update_flag contains LIVING:

OffsetSize / EndiannessTypeNameComment
0x014 / -MovementFlagsflags
0x054 / Littleu32timestamp
0x0912 / -Vector3dliving_position
0x154 / Littlef32living_orientation

If flags contains ON_TRANSPORT:

OffsetSize / EndiannessTypeNameComment
0x19- / -PackedGuidtransport_guid
-12 / -Vector3dtransport_position
-4 / Littlef32transport_orientation

If flags contains SWIMMING:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32pitch
-4 / Littlef32fall_time

If flags contains JUMPING:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32z_speed
-4 / Littlef32cos_angle
-4 / Littlef32sin_angle
-4 / Littlef32xy_speed

If flags contains SPLINE_ELEVATION:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32spline_elevation
-4 / Littlef32walking_speed
-4 / Littlef32running_speed
-4 / Littlef32backwards_running_speed
-4 / Littlef32swimming_speed
-4 / Littlef32backwards_swimming_speed
-4 / Littlef32turn_rate

If flags contains SPLINE_ENABLED:

OffsetSize / EndiannessTypeNameComment
-4 / -SplineFlagspline_flags

If spline_flags contains FINAL_ANGLE:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32angle

Else If spline_flags contains FINAL_TARGET:

OffsetSize / EndiannessTypeNameComment
-8 / Littleu64target

Else If spline_flags contains FINAL_POINT:

OffsetSize / EndiannessTypeNameComment
-12 / -Vector3dspline_final_point
-4 / Littleu32time_passed
-4 / Littleu32duration
-4 / Littleu32id
-4 / Littleu32amount_of_nodes
-? / -Vector3d[amount_of_nodes]nodes
-12 / -Vector3dfinal_node

Else If update_flag contains HAS_POSITION:

OffsetSize / EndiannessTypeNameComment
-12 / -Vector3dposition
-4 / Littlef32orientation

If update_flag contains HIGH_GUID:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32unknown0vmangos statically sets to 0

If update_flag contains ALL:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32unknown1vmangos sets statically to 1

If update_flag contains MELEE_ATTACKING:

OffsetSize / EndiannessTypeNameComment
-- / -PackedGuidguid

If update_flag contains TRANSPORT:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32transport_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

OffsetSize / EndiannessTypeNameComment
0x001 / -UpdateFlagupdate_flag

If update_flag contains LIVING:

OffsetSize / EndiannessTypeNameComment
0x014 / -MovementFlagsflags
0x051 / -u8extra_flags
0x064 / Littleu32timestamp
0x0A12 / -Vector3dliving_position
0x164 / Littlef32living_orientation

If flags contains ON_TRANSPORT:

OffsetSize / EndiannessTypeNameComment
0x1A- / -TransportInfotransport

If flags contains SWIMMING:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32pitch1

Else If flags contains ONTRANSPORT:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32pitch2
-4 / Littlef32fall_time

If flags contains JUMPING:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32z_speed
-4 / Littlef32cos_angle
-4 / Littlef32sin_angle
-4 / Littlef32xy_speed

If flags contains SPLINE_ELEVATION:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32spline_elevation
-4 / Littlef32walking_speed
-4 / Littlef32running_speed
-4 / Littlef32backwards_running_speed
-4 / Littlef32swimming_speed
-4 / Littlef32flying_speed
-4 / Littlef32backwards_flying_speed
-4 / Littlef32backwards_swimming_speed
-4 / Littlef32turn_rate

If flags contains SPLINE_ENABLED:

OffsetSize / EndiannessTypeNameComment
-4 / -SplineFlagspline_flags

If spline_flags contains FINAL_ANGLE:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32angle

Else If spline_flags contains FINAL_TARGET:

OffsetSize / EndiannessTypeNameComment
-8 / LittleGuidtarget

Else If spline_flags contains FINAL_POINT:

OffsetSize / EndiannessTypeNameComment
-12 / -Vector3dspline_final_point
-4 / Littleu32time_passed
-4 / Littleu32duration
-4 / Littleu32id
-4 / Littleu32amount_of_nodes
-? / -Vector3d[amount_of_nodes]nodes
-12 / -Vector3dfinal_node

Else If update_flag contains HAS_POSITION:

OffsetSize / EndiannessTypeNameComment
-12 / -Vector3dposition
-4 / Littlef32orientation

If update_flag contains HIGH_GUID:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32unknown0vmangos statically sets to 0
-4 / Littleu32unknown1

If update_flag contains ALL:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32unknown2vmangos sets statically to 1

If update_flag contains MELEE_ATTACKING:

OffsetSize / EndiannessTypeNameComment
-- / -PackedGuidguid

If update_flag contains TRANSPORT:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32transport_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

OffsetSize / EndiannessTypeNameComment
0x002 / -UpdateFlagupdate_flag

If update_flag contains LIVING:

OffsetSize / EndiannessTypeNameComment
0x026 / -MovementFlagsflags
0x084 / Littleu32timestamp
0x0C12 / -Vector3dposition
0x184 / Littlef32orientation

If flags contains ON_TRANSPORT_AND_INTERPOLATED_MOVEMENT:

OffsetSize / EndiannessTypeNameComment
0x1C- / -TransportInfotransport_info
-4 / Littleu32transport_time

Else If flags contains ON_TRANSPORT:

OffsetSize / EndiannessTypeNameComment
-- / -TransportInfotransport

If flags contains SWIMMING:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32pitch1

Else If flags contains FLYING:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32pitch2

Else If flags contains ALWAYS_ALLOW_PITCHING:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32pitch3
-4 / Littlef32fall_time

If flags contains FALLING:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32z_speed
-4 / Littlef32cos_angle
-4 / Littlef32sin_angle
-4 / Littlef32xy_speed

If flags contains SPLINE_ELEVATION:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32spline_elevation
-4 / Littlef32walking_speed
-4 / Littlef32running_speed
-4 / Littlef32backwards_running_speed
-4 / Littlef32swimming_speed
-4 / Littlef32backwards_swimming_speed
-4 / Littlef32flight_speed
-4 / Littlef32backwards_flight_speed
-4 / Littlef32turn_rate
-4 / Littlef32pitch_rate

If flags contains SPLINE_ENABLED:

OffsetSize / EndiannessTypeNameComment
-4 / -SplineFlagspline_flags

If spline_flags contains FINAL_ANGLE:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32angle

Else If spline_flags contains FINAL_TARGET:

OffsetSize / EndiannessTypeNameComment
-8 / Littleu64target

Else If spline_flags contains FINAL_POINT:

OffsetSize / EndiannessTypeNameComment
-12 / -Vector3dspline_final_point
-4 / Littleu32time_passed
-4 / Littleu32duration
-4 / Littleu32id
-4 / Littleu32amount_of_nodes
-? / -Vector3d[amount_of_nodes]nodes
-12 / -Vector3dfinal_node

Else If update_flag contains POSITION:

OffsetSize / EndiannessTypeNameComment
-- / -PackedGuidtransport_guid
-12 / -Vector3dposition1
-4 / Littlef32orientation1
-4 / Littlef32corpse_orientation

Else If update_flag contains HAS_POSITION:

OffsetSize / EndiannessTypeNameComment
-12 / -Vector3dposition2
-4 / Littlef32orientation2

If update_flag contains HIGH_GUID:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32unknown0vmangos statically sets to 0

If update_flag contains LOW_GUID:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32unknown1

If update_flag contains HAS_ATTACKING_TARGET:

OffsetSize / EndiannessTypeNameComment
-- / -PackedGuidguid

If update_flag contains TRANSPORT:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32transport_progress_in_ms

If update_flag contains VEHICLE:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32vehicle_id
-4 / Littlef32vehicle_orientation

If update_flag contains ROTATION:

OffsetSize / EndiannessTypeNameComment
-8 / Littleu64packed_local_rotationAzerothCore deliberately casts to i64

Used in: