From b3ee407707db01a5bc49f544a56b1db381687f65 Mon Sep 17 00:00:00 2001 From: Treeston Date: Sun, 23 Jun 2019 16:01:51 +0200 Subject: Core/Misc: Add static versions of GetGUID and ToX methods to Object. The static versions return Empty/nullptr for null objects. --- src/server/game/Entities/Object/Object.h | 47 ++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 17 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 8b8838a5028..7df4a119436 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -74,6 +74,7 @@ class TC_GAME_API Object virtual void AddToWorld(); virtual void RemoveFromWorld(); + static ObjectGuid GetGUID(Object const* o) { return o ? o->GetGUID() : ObjectGuid::Empty; } ObjectGuid GetGUID() const { return GetGuidValue(OBJECT_FIELD_GUID); } PackedGuid const& GetPackGUID() const { return m_PackGUID; } uint32 GetEntry() const { return GetUInt32Value(OBJECT_FIELD_ENTRY); } @@ -156,23 +157,35 @@ class TC_GAME_API Object // FG: some hacky helpers void ForceValuesUpdateAtIndex(uint32); - Player* ToPlayer() { if (GetTypeId() == TYPEID_PLAYER) return reinterpret_cast(this); else return nullptr; } - Player const* ToPlayer() const { if (GetTypeId() == TYPEID_PLAYER) return reinterpret_cast(this); else return nullptr; } - - Creature* ToCreature() { if (GetTypeId() == TYPEID_UNIT) return reinterpret_cast(this); else return nullptr; } - Creature const* ToCreature() const { if (GetTypeId() == TYPEID_UNIT) return reinterpret_cast(this); else return nullptr; } - - Unit* ToUnit() { if (isType(TYPEMASK_UNIT)) return reinterpret_cast(this); else return nullptr; } - Unit const* ToUnit() const { if (isType(TYPEMASK_UNIT)) return reinterpret_cast(this); else return nullptr; } - - GameObject* ToGameObject() { if (GetTypeId() == TYPEID_GAMEOBJECT) return reinterpret_cast(this); else return nullptr; } - GameObject const* ToGameObject() const { if (GetTypeId() == TYPEID_GAMEOBJECT) return reinterpret_cast(this); else return nullptr; } - - Corpse* ToCorpse() { if (GetTypeId() == TYPEID_CORPSE) return reinterpret_cast(this); else return nullptr; } - Corpse const* ToCorpse() const { if (GetTypeId() == TYPEID_CORPSE) return reinterpret_cast(this); else return nullptr; } - - DynamicObject* ToDynObject() { if (GetTypeId() == TYPEID_DYNAMICOBJECT) return reinterpret_cast(this); else return nullptr; } - DynamicObject const* ToDynObject() const { if (GetTypeId() == TYPEID_DYNAMICOBJECT) return reinterpret_cast(this); else return nullptr; } + static Player* ToPlayer(Object* o) { if (o && o->GetTypeId() == TYPEID_PLAYER) return reinterpret_cast(o); else return nullptr; } + static Player const* ToPlayer(Object const* o) { if (o && o->GetTypeId() == TYPEID_PLAYER) return reinterpret_cast(o); else return nullptr; } + Player* ToPlayer() { return ToPlayer(this); } + Player const* ToPlayer() const { return ToPlayer(this); } + + static Creature* ToCreature(Object* o) { if (o && o->GetTypeId() == TYPEID_UNIT) return reinterpret_cast(o); else return nullptr; } + static Creature const* ToCreature(Object const* o) { if (o && o->GetTypeId() == TYPEID_UNIT) return reinterpret_cast(o); else return nullptr; } + Creature* ToCreature() { return ToCreature(this); } + Creature const* ToCreature() const { return ToCreature(this); } + + static Unit* ToUnit(Object* o) { if (o && o->isType(TYPEMASK_UNIT)) return reinterpret_cast(o); else return nullptr; } + static Unit const* ToUnit(Object const* o) { if (o && o->isType(TYPEMASK_UNIT)) return reinterpret_cast(o); else return nullptr; } + Unit* ToUnit() { return ToUnit(this); } + Unit const* ToUnit() const { return ToUnit(this); } + + static GameObject* ToGameObject(Object* o) { if (o && o->GetTypeId() == TYPEID_GAMEOBJECT) return reinterpret_cast(o); else return nullptr; } + static GameObject const* ToGameObject(Object const* o) { if (o && o->GetTypeId() == TYPEID_GAMEOBJECT) return reinterpret_cast(o); else return nullptr; } + GameObject* ToGameObject() { return ToGameObject(this); } + GameObject const* ToGameObject() const { return ToGameObject(this); } + + static Corpse* ToCorpse(Object* o) { if (o && o->GetTypeId() == TYPEID_CORPSE) return reinterpret_cast(o); else return nullptr; } + static Corpse const* ToCorpse(Object const* o) { if (o && o->GetTypeId() == TYPEID_CORPSE) return reinterpret_cast(o); else return nullptr; } + Corpse* ToCorpse() { return ToCorpse(this); } + Corpse const* ToCorpse() const { return ToCorpse(this); } + + static DynamicObject* ToDynObject(Object* o) { if (o && o->GetTypeId() == TYPEID_DYNAMICOBJECT) return reinterpret_cast(o); else return nullptr; } + static DynamicObject const* ToDynObject(Object const* o) { if (o && o->GetTypeId() == TYPEID_DYNAMICOBJECT) return reinterpret_cast(o); else return nullptr; } + DynamicObject* ToDynObject() { return ToDynObject(this); } + DynamicObject const* ToDynObject() const { return ToDynObject(this); } virtual std::string GetDebugInfo() const; -- cgit v1.2.3