mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-30 05:43:12 +01:00
Core/Entities:
* Corrected create object type after changing updateflags * Updated MovementFlags2 * Minor cleanup in spline flag methods
This commit is contained in:
@@ -180,7 +180,7 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c
|
||||
if (!target)
|
||||
return;
|
||||
|
||||
uint8 updatetype = UPDATETYPE_CREATE_OBJECT;
|
||||
uint8 updateType = UPDATETYPE_CREATE_OBJECT;
|
||||
uint16 flags = m_updateFlag;
|
||||
|
||||
uint32 valCount = m_valuesCount;
|
||||
@@ -191,16 +191,26 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c
|
||||
else if (GetTypeId() == TYPEID_PLAYER)
|
||||
valCount = PLAYER_END_NOT_SELF;
|
||||
|
||||
switch (GetGUIDHigh())
|
||||
{
|
||||
case HIGHGUID_PLAYER:
|
||||
case HIGHGUID_PET:
|
||||
case HIGHGUID_CORPSE:
|
||||
case HIGHGUID_DYNAMICOBJECT:
|
||||
updateType = UPDATETYPE_CREATE_OBJECT2;
|
||||
break;
|
||||
case HIGHGUID_UNIT:
|
||||
if (ToUnit()->ToTempSummon() && IS_PLAYER_GUID(ToUnit()->ToTempSummon()->GetSummonerGUID()))
|
||||
updateType = UPDATETYPE_CREATE_OBJECT2;
|
||||
break;
|
||||
case HIGHGUID_GAMEOBJECT:
|
||||
if (IS_PLAYER_GUID(ToGameObject()->GetOwnerGUID()))
|
||||
updateType = UPDATETYPE_CREATE_OBJECT2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (flags & UPDATEFLAG_STATIONARY_POSITION)
|
||||
{
|
||||
// UPDATETYPE_CREATE_OBJECT2 dynamic objects, corpses...
|
||||
if (isType(TYPEMASK_DYNAMICOBJECT) || isType(TYPEMASK_CORPSE) || isType(TYPEMASK_PLAYER))
|
||||
updatetype = UPDATETYPE_CREATE_OBJECT2;
|
||||
|
||||
// UPDATETYPE_CREATE_OBJECT2 for pets...
|
||||
if (target->GetPetGUID() == GetGUID())
|
||||
updatetype = UPDATETYPE_CREATE_OBJECT2;
|
||||
|
||||
// UPDATETYPE_CREATE_OBJECT2 for some gameobject types...
|
||||
if (isType(TYPEMASK_GAMEOBJECT))
|
||||
{
|
||||
@@ -210,7 +220,7 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c
|
||||
case GAMEOBJECT_TYPE_DUEL_ARBITER:
|
||||
case GAMEOBJECT_TYPE_FLAGSTAND:
|
||||
case GAMEOBJECT_TYPE_FLAGDROP:
|
||||
updatetype = UPDATETYPE_CREATE_OBJECT2;
|
||||
updateType = UPDATETYPE_CREATE_OBJECT2;
|
||||
break;
|
||||
case GAMEOBJECT_TYPE_TRANSPORT:
|
||||
flags |= UPDATEFLAG_TRANSPORT;
|
||||
@@ -219,14 +229,13 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (ToUnit() && ToUnit()->getVictim())
|
||||
flags |= UPDATEFLAG_HAS_TARGET;
|
||||
|
||||
ByteBuffer buf(500);
|
||||
buf << uint8(updatetype);
|
||||
buf << uint8(updateType);
|
||||
buf.append(GetPackGUID());
|
||||
buf << uint8(m_objectTypeId);
|
||||
|
||||
@@ -235,7 +244,7 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c
|
||||
UpdateMask updateMask;
|
||||
updateMask.SetCount(valCount);
|
||||
_SetCreateBits(&updateMask, target);
|
||||
_BuildValuesUpdate(updatetype, &buf, &updateMask, target);
|
||||
_BuildValuesUpdate(updateType, &buf, &updateMask, target);
|
||||
data->AddUpdateBlock(buf);
|
||||
}
|
||||
|
||||
|
||||
@@ -362,19 +362,24 @@ class Object
|
||||
void ForceValuesUpdateAtIndex(uint32);
|
||||
|
||||
Player* ToPlayer() { if (GetTypeId() == TYPEID_PLAYER) return reinterpret_cast<Player*>(this); else return NULL; }
|
||||
Player const* ToPlayer() const { if (GetTypeId() == TYPEID_PLAYER) return (Player const*)((Player*)this); else return NULL; }
|
||||
Creature* ToCreature() { if (GetTypeId() == TYPEID_UNIT) return reinterpret_cast<Creature*>(this); else return NULL; }
|
||||
Creature const* ToCreature() const { if (GetTypeId() == TYPEID_UNIT) return (Creature const*)((Creature*)this); else return NULL; }
|
||||
Player const* ToPlayer() const { if (GetTypeId() == TYPEID_PLAYER) return reinterpret_cast<Player const*>(this); else return NULL; }
|
||||
|
||||
Creature* ToCreature() { if (GetTypeId() == TYPEID_UNIT) return reinterpret_cast<Creature*>(this); else return NULL; }
|
||||
Creature const* ToCreature() const { if (GetTypeId() == TYPEID_UNIT) return reinterpret_cast<Creature const*>(this); else return NULL; }
|
||||
|
||||
Unit* ToUnit() { if (isType(TYPEMASK_UNIT)) return reinterpret_cast<Unit*>(this); else return NULL; }
|
||||
Unit const* ToUnit() const { if (isType(TYPEMASK_UNIT)) return reinterpret_cast<Unit const*>(this); else return NULL; }
|
||||
|
||||
Unit* ToUnit() { if (GetTypeId() == TYPEID_UNIT || GetTypeId() == TYPEID_PLAYER) return reinterpret_cast<Unit*>(this); else return NULL; }
|
||||
Unit const* ToUnit() const { if (GetTypeId() == TYPEID_UNIT || GetTypeId() == TYPEID_PLAYER) return (const Unit*)((Unit*)this); else return NULL; }
|
||||
GameObject* ToGameObject() { if (GetTypeId() == TYPEID_GAMEOBJECT) return reinterpret_cast<GameObject*>(this); else return NULL; }
|
||||
GameObject const* ToGameObject() const { if (GetTypeId() == TYPEID_GAMEOBJECT) return (const GameObject*)((GameObject*)this); else return NULL; }
|
||||
GameObject const* ToGameObject() const { if (GetTypeId() == TYPEID_GAMEOBJECT) return reinterpret_cast<GameObject const*>(this); else return NULL; }
|
||||
|
||||
Corpse* ToCorpse() { if (GetTypeId() == TYPEID_CORPSE) return reinterpret_cast<Corpse*>(this); else return NULL; }
|
||||
Corpse const* ToCorpse() const { if (GetTypeId() == TYPEID_CORPSE) return (const Corpse*)((Corpse*)this); else return NULL; }
|
||||
protected:
|
||||
Corpse const* ToCorpse() const { if (GetTypeId() == TYPEID_CORPSE) return reinterpret_cast<Corpse const*>(this); else return NULL; }
|
||||
|
||||
DynamicObject* ToDynObject() { if (GetTypeId() == TYPEID_DYNAMICOBJECT) return reinterpret_cast<DynamicObject*>(this); else return NULL; }
|
||||
DynamicObject const* ToDynObject() const { if (GetTypeId() == TYPEID_DYNAMICOBJECT) return reinterpret_cast<DynamicObject const*>(this); else return NULL; }
|
||||
|
||||
protected:
|
||||
Object();
|
||||
|
||||
void _InitValues();
|
||||
|
||||
@@ -42,10 +42,10 @@ enum HighGuid
|
||||
HIGHGUID_PET = 0xF14, // blizz F140
|
||||
HIGHGUID_VEHICLE = 0xF15, // blizz F550
|
||||
HIGHGUID_DYNAMICOBJECT = 0xF10, // blizz F100
|
||||
HIGHGUID_CORPSE = 0xF101, // blizz F100
|
||||
HIGHGUID_CORPSE = 0xF101, // blizz F100
|
||||
HIGHGUID_MO_TRANSPORT = 0x1FC, // blizz 1FC0 (for GAMEOBJECT_TYPE_MO_TRANSPORT)
|
||||
HIGHGUID_GROUP = 0x1F5,
|
||||
HIGHGUID_GUILD = 0x1FF5, // new 4.x
|
||||
HIGHGUID_GUILD = 0x1FF5, // new 4.x
|
||||
};
|
||||
|
||||
#define IS_EMPTY_GUID(Guid) (Guid == 0)
|
||||
|
||||
@@ -720,20 +720,16 @@ enum MovementFlags2
|
||||
MOVEMENTFLAG2_NONE = 0x00000000,
|
||||
MOVEMENTFLAG2_NO_STRAFE = 0x00000001,
|
||||
MOVEMENTFLAG2_NO_JUMPING = 0x00000002,
|
||||
MOVEMENTFLAG2_UNK3 = 0x00000004, // Overrides various clientside checks
|
||||
MOVEMENTFLAG2_FULL_SPEED_TURNING = 0x00000008,
|
||||
MOVEMENTFLAG2_FULL_SPEED_PITCHING = 0x00000010,
|
||||
MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING = 0x00000020,
|
||||
MOVEMENTFLAG2_UNK7 = 0x00000040,
|
||||
MOVEMENTFLAG2_UNK8 = 0x00000080,
|
||||
MOVEMENTFLAG2_UNK9 = 0x00000100,
|
||||
MOVEMENTFLAG2_UNK10 = 0x00000200,
|
||||
MOVEMENTFLAG2_INTERPOLATED_MOVEMENT = 0x00000400,
|
||||
MOVEMENTFLAG2_INTERPOLATED_TURNING = 0x00000800,
|
||||
MOVEMENTFLAG2_INTERPOLATED_PITCHING = 0x00001000,
|
||||
MOVEMENTFLAG2_UNK14 = 0x00002000,
|
||||
MOVEMENTFLAG2_UNK15 = 0x00004000,
|
||||
MOVEMENTFLAG2_UNK16 = 0x00008000,
|
||||
MOVEMENTFLAG2_FULL_SPEED_TURNING = 0x00000004,
|
||||
MOVEMENTFLAG2_FULL_SPEED_PITCHING = 0x00000008,
|
||||
MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING = 0x00000010,
|
||||
MOVEMENTFLAG2_UNK7 = 0x00000020,
|
||||
MOVEMENTFLAG2_UNK8 = 0x00000040,
|
||||
MOVEMENTFLAG2_UNK9 = 0x00000080,
|
||||
MOVEMENTFLAG2_UNK10 = 0x00000100,
|
||||
MOVEMENTFLAG2_INTERPOLATED_MOVEMENT = 0x00000200,
|
||||
MOVEMENTFLAG2_INTERPOLATED_TURNING = 0x00000400,
|
||||
MOVEMENTFLAG2_INTERPOLATED_PITCHING = 0x00000800,
|
||||
};
|
||||
|
||||
enum UnitTypeMask
|
||||
|
||||
@@ -236,7 +236,9 @@ void FlightPathMovementGenerator::Reset(Player & player)
|
||||
init.Path().push_back(vertice);
|
||||
}
|
||||
init.SetFirstPointId(GetCurrentNode());
|
||||
init.EnableTaxiFlight();
|
||||
init.SetFly();
|
||||
init.SetSmooth();
|
||||
init.SetWalk(true);
|
||||
init.SetVelocity(PLAYER_FLIGHT_SPEED);
|
||||
init.Launch();
|
||||
}
|
||||
|
||||
@@ -104,14 +104,12 @@ namespace Movement
|
||||
void EnableAnimation(uint8 anim) { raw() = (raw() & ~(Mask_Animations | Falling | Parabolic | FallingSlow)) | Animation | (anim & Mask_Animations); }
|
||||
void EnableParabolic() { raw() = (raw() & ~(Mask_Animations | Falling | Animation | FallingSlow)) | Parabolic; }
|
||||
void EnableFalling() { raw() = (raw() & ~(Mask_Animations | Parabolic | Animation)) | Falling; }
|
||||
void EnableFlying() { raw() = Flying; }
|
||||
void EnableCatmullRom() { raw() = Catmullrom | UncompressedPath; }
|
||||
void EnableCatmullRom() { raw() = (raw() & ~SmoothGroundPath) | Catmullrom | UncompressedPath; }
|
||||
void EnableFacingPoint() { raw() = (raw() & ~Mask_Final_Facing) | Final_Point; }
|
||||
void EnableFacingAngle() { raw() = (raw() & ~Mask_Final_Facing) | Final_Angle; }
|
||||
void EnableFacingTarget() { raw() = (raw() & ~Mask_Final_Facing) | Final_Target; }
|
||||
void EnableTransportEnter() { raw() = (raw() & ~TransportExit) | TransportEnter; }
|
||||
void EnableTransportExit() { raw() = (raw() & ~TransportEnter) | TransportExit; }
|
||||
void EnableTaxiFlight() { raw() = raw() | Catmullrom | Flying | Walkmode | UncompressedPath; } //4.3.4 0x600A00
|
||||
|
||||
uint8 animId : 3;
|
||||
bool unknown0 : 1;
|
||||
|
||||
@@ -144,12 +144,11 @@ namespace Movement
|
||||
Unit& unit;
|
||||
};
|
||||
|
||||
inline void MoveSplineInit::SetFly() { args.flags.EnableFlying(); }
|
||||
inline void MoveSplineInit::EnableTaxiFlight() { args.flags.EnableTaxiFlight(); }
|
||||
inline void MoveSplineInit::SetWalk(bool enable) { args.flags.walkmode = enable;}
|
||||
inline void MoveSplineInit::SetSmooth() { args.flags.EnableCatmullRom();}
|
||||
inline void MoveSplineInit::SetCyclic() { args.flags.cyclic = true;}
|
||||
inline void MoveSplineInit::SetFall() { args.flags.EnableFalling();}
|
||||
inline void MoveSplineInit::SetFly() { args.flags.flying = true; }
|
||||
inline void MoveSplineInit::SetWalk(bool enable) { args.flags.walkmode = enable; }
|
||||
inline void MoveSplineInit::SetSmooth() { args.flags.EnableCatmullRom(); }
|
||||
inline void MoveSplineInit::SetCyclic() { args.flags.cyclic = true; }
|
||||
inline void MoveSplineInit::SetFall() { args.flags.EnableFalling(); }
|
||||
inline void MoveSplineInit::SetVelocity(float vel) { args.velocity = vel; args.HasVelocity = true; }
|
||||
inline void MoveSplineInit::SetOrientationInversed() { args.flags.orientationInversed = true;}
|
||||
inline void MoveSplineInit::SetTransportEnter() { args.flags.EnableTransportEnter(); }
|
||||
|
||||
Reference in New Issue
Block a user