aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2012-08-07 13:27:33 +0200
committerShauren <shauren.trinity@gmail.com>2012-08-07 13:27:33 +0200
commit533517baabdfeec322caa096afc344c6fe71769e (patch)
treec8b35e4639c724c8c7f3815c2a1d4f09e29fbc48 /src/server/game/Entities
parent5cfb52997ee7a568003d4e4d1ca42fd40c6f87c9 (diff)
Core/Entities:
* Corrected create object type after changing updateflags * Updated MovementFlags2 * Minor cleanup in spline flag methods
Diffstat (limited to 'src/server/game/Entities')
-rwxr-xr-xsrc/server/game/Entities/Object/Object.cpp35
-rwxr-xr-xsrc/server/game/Entities/Object/Object.h19
-rwxr-xr-xsrc/server/game/Entities/Object/ObjectDefines.h4
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.h24
4 files changed, 46 insertions, 36 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 1f859a585e6..ec1cb8d7728 100755
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -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;
- if (flags & UPDATEFLAG_STATIONARY_POSITION)
+ switch (GetGUIDHigh())
{
- // 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;
+ 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 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);
}
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index 3e00e775b4b..3829e2f75f2 100755
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -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; }
+ 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 (Creature const*)((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();
diff --git a/src/server/game/Entities/Object/ObjectDefines.h b/src/server/game/Entities/Object/ObjectDefines.h
index 2e74a3b4ee4..9fd4279a79c 100755
--- a/src/server/game/Entities/Object/ObjectDefines.h
+++ b/src/server/game/Entities/Object/ObjectDefines.h
@@ -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)
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 3133d75fa07..8fee3ed74e0 100755
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -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