* unload WMOs when unloading map tile * removed silly old chat AI * misc stuff & cleanups
98 lines
2.9 KiB
C
98 lines
2.9 KiB
C
#ifndef _UPDATEDATA_H
|
|
#define _UPDATEDATA_H
|
|
|
|
enum OBJECT_UPDATE_TYPE
|
|
{
|
|
UPDATETYPE_VALUES = 0,
|
|
UPDATETYPE_MOVEMENT = 1,
|
|
UPDATETYPE_CREATE_OBJECT = 2,
|
|
UPDATETYPE_CREATE_OBJECT2 = 3,
|
|
UPDATETYPE_OUT_OF_RANGE_OBJECTS = 4,
|
|
UPDATETYPE_NEAR_OBJECTS = 5
|
|
};
|
|
|
|
enum OBJECT_UPDATE_FLAGS
|
|
{
|
|
UPDATEFLAG_NONE = 0x0000,
|
|
UPDATEFLAG_SELF = 0x0001,
|
|
UPDATEFLAG_TRANSPORT = 0x0002,
|
|
UPDATEFLAG_HAS_TARGET = 0x0004,
|
|
UPDATEFLAG_LOWGUID = 0x0008,
|
|
UPDATEFLAG_HIGHGUID = 0x0010,
|
|
UPDATEFLAG_LIVING = 0x0020,
|
|
UPDATEFLAG_HAS_POSITION = 0x0040,
|
|
UPDATEFLAG_VEHICLE = 0x0080,
|
|
UPDATEFLAG_POSITION = 0x0100,
|
|
UPDATEFLAG_ROTATION = 0x0200
|
|
};
|
|
|
|
enum MovementFlags
|
|
{
|
|
MOVEMENTFLAG_NONE = 0x00000000,
|
|
MOVEMENTFLAG_FORWARD = 0x00000001,
|
|
MOVEMENTFLAG_BACKWARD = 0x00000002,
|
|
MOVEMENTFLAG_STRAFE_LEFT = 0x00000004,
|
|
MOVEMENTFLAG_STRAFE_RIGHT = 0x00000008,
|
|
MOVEMENTFLAG_LEFT = 0x00000010,
|
|
MOVEMENTFLAG_RIGHT = 0x00000020,
|
|
MOVEMENTFLAG_PITCH_UP = 0x00000040,
|
|
MOVEMENTFLAG_PITCH_DOWN = 0x00000080,
|
|
MOVEMENTFLAG_WALK = 0x00000100,
|
|
MOVEMENTFLAG_ONTRANSPORT = 0x00000200,
|
|
MOVEMENTFLAG_UNK1 = 0x00000400,
|
|
MOVEMENTFLAG_FLY_UNK1 = 0x00000800,
|
|
MOVEMENTFLAG_JUMPING = 0x00001000,
|
|
MOVEMENTFLAG_UNK4 = 0x00002000,
|
|
MOVEMENTFLAG_FALLING = 0x00004000,
|
|
// 0x8000, 0x10000, 0x20000, 0x40000, 0x80000, 0x100000
|
|
MOVEMENTFLAG_SWIMMING = 0x00200000, // appears with fly flag also
|
|
MOVEMENTFLAG_FLY_UP = 0x00400000,
|
|
MOVEMENTFLAG_CAN_FLY = 0x00800000,
|
|
MOVEMENTFLAG_FLYING = 0x01000000,
|
|
MOVEMENTFLAG_UNK5 = 0x02000000,
|
|
MOVEMENTFLAG_SPLINE = 0x04000000, // probably wrong name
|
|
MOVEMENTFLAG_SPLINE2 = 0x08000000,
|
|
MOVEMENTFLAG_WATERWALKING = 0x10000000,
|
|
MOVEMENTFLAG_SAFE_FALL = 0x20000000, // active rogue safe fall spell (passive)
|
|
MOVEMENTFLAG_UNK3 = 0x40000000
|
|
};
|
|
|
|
struct MovementInfo
|
|
{
|
|
// common
|
|
uint32 flags;
|
|
uint16 unkFlags;
|
|
uint32 time;
|
|
float x, y, z, o;
|
|
// transport
|
|
uint64 t_guid;
|
|
float t_x, t_y, t_z, t_o;
|
|
uint32 t_time;
|
|
uint8 t_seat;
|
|
// swimming and unk
|
|
float s_angle;
|
|
// last fall time
|
|
uint32 fallTime;
|
|
// jumping
|
|
float j_unk, j_sinAngle, j_cosAngle, j_xyspeed;
|
|
// spline
|
|
float u_unk1;
|
|
|
|
MovementInfo()
|
|
{
|
|
flags = time = t_time = fallTime = unkFlags = 0;
|
|
t_seat = 0;
|
|
x = y = z = o = t_x = t_y = t_z = t_o = s_angle = j_unk = j_sinAngle = j_cosAngle = j_xyspeed = u_unk1 = 0.0f;
|
|
t_guid = 0;
|
|
}
|
|
|
|
void SetMovementFlags(uint32 _flags)
|
|
{
|
|
flags = _flags;
|
|
}
|
|
};
|
|
|
|
bool IsFloatField(uint8, uint32);
|
|
|
|
#endif
|