aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp2
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTrigger.cpp1
-rw-r--r--src/server/game/Entities/Conversation/Conversation.cpp1
-rw-r--r--src/server/game/Entities/Corpse/Corpse.cpp1
-rw-r--r--src/server/game/Entities/DynamicObject/DynamicObject.cpp1
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp1
-rw-r--r--src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.cpp1
-rw-r--r--src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp1
-rw-r--r--src/server/game/Entities/Item/Container/Bag.cpp1
-rw-r--r--src/server/game/Entities/Item/Item.cpp1
-rw-r--r--src/server/game/Entities/Object/Object.cpp1
-rw-r--r--src/server/game/Entities/Object/Object.h7
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.h48
-rw-r--r--src/server/game/Entities/Player/Player.cpp1
-rw-r--r--src/server/game/Entities/SceneObject/SceneObject.cpp1
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp1
16 files changed, 37 insertions, 33 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index 0eca332b7dc..61f44b98202 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -449,7 +449,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) const
}
case CONDITION_TYPE_MASK:
{
- condMeets = object->isType(ConditionValue1);
+ condMeets = object->isType(TypeMask(ConditionValue1));
break;
}
case CONDITION_RELATION_TO:
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
index 93acbc2bf47..234a03aa9d0 100644
--- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
+++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
@@ -52,7 +52,6 @@ AreaTrigger::AreaTrigger() : WorldObject(false), MapObject(), _spawnId(0), _aurE
_isRemoved(false), _reachedDestination(true), _lastSplineIndex(0),
_areaTriggerCreateProperties(nullptr), _areaTriggerTemplate(nullptr)
{
- m_objectType |= TYPEMASK_AREATRIGGER;
m_objectTypeId = TYPEID_AREATRIGGER;
m_updateFlag.Stationary = true;
diff --git a/src/server/game/Entities/Conversation/Conversation.cpp b/src/server/game/Entities/Conversation/Conversation.cpp
index e5e59f49542..7891bd9bd68 100644
--- a/src/server/game/Entities/Conversation/Conversation.cpp
+++ b/src/server/game/Entities/Conversation/Conversation.cpp
@@ -34,7 +34,6 @@
Conversation::Conversation() : WorldObject(false), _duration(0), _textureKitId(0)
{
- m_objectType |= TYPEMASK_CONVERSATION;
m_objectTypeId = TYPEID_CONVERSATION;
m_updateFlag.Stationary = true;
diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp
index 225650bb472..95e8fb5ba0a 100644
--- a/src/server/game/Entities/Corpse/Corpse.cpp
+++ b/src/server/game/Entities/Corpse/Corpse.cpp
@@ -32,7 +32,6 @@
Corpse::Corpse(CorpseType type) : WorldObject(type != CORPSE_BONES), m_type(type)
{
- m_objectType |= TYPEMASK_CORPSE;
m_objectTypeId = TYPEID_CORPSE;
m_updateFlag.Stationary = true;
diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.cpp b/src/server/game/Entities/DynamicObject/DynamicObject.cpp
index fc3e1c4da04..4a86d6c0e91 100644
--- a/src/server/game/Entities/DynamicObject/DynamicObject.cpp
+++ b/src/server/game/Entities/DynamicObject/DynamicObject.cpp
@@ -34,7 +34,6 @@
DynamicObject::DynamicObject(bool isWorldObject) : WorldObject(isWorldObject),
_aura(nullptr), _removedAura(nullptr), _caster(nullptr), _duration(0), _isViewpoint(false)
{
- m_objectType |= TYPEMASK_DYNAMICOBJECT;
m_objectTypeId = TYPEID_DYNAMICOBJECT;
m_updateFlag.Stationary = true;
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 6481325ec04..091769a4685 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -835,7 +835,6 @@ void SetControlZoneValue::Execute(GameObjectTypeBase& type) const
GameObject::GameObject() : WorldObject(false), MapObject(),
m_goValue(), m_stringIds(), m_AI(nullptr), m_respawnCompatibilityMode(false), _animKitId(0), _worldEffectID(0)
{
- m_objectType |= TYPEMASK_GAMEOBJECT;
m_objectTypeId = TYPEID_GAMEOBJECT;
m_updateFlag.Stationary = true;
diff --git a/src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.cpp b/src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.cpp
index 4def71042f9..0dffdacb8a1 100644
--- a/src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.cpp
+++ b/src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.cpp
@@ -23,7 +23,6 @@
AzeriteEmpoweredItem::AzeriteEmpoweredItem()
{
- m_objectType |= TYPEMASK_AZERITE_EMPOWERED_ITEM;
m_objectTypeId = TYPEID_AZERITE_EMPOWERED_ITEM;
m_entityFragments.Add(WowCS::EntityFragment::Tag_AzeriteEmpoweredItem, false);
diff --git a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp
index f6dc3c18d33..213dac345da 100644
--- a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp
+++ b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp
@@ -29,7 +29,6 @@
AzeriteItem::AzeriteItem() : Item()
{
- m_objectType |= TYPEMASK_AZERITE_ITEM;
m_objectTypeId = TYPEID_AZERITE_ITEM;
m_entityFragments.Add(WowCS::EntityFragment::Tag_AzeriteItem, false);
diff --git a/src/server/game/Entities/Item/Container/Bag.cpp b/src/server/game/Entities/Item/Container/Bag.cpp
index d885623eeed..15d5c6795b2 100644
--- a/src/server/game/Entities/Item/Container/Bag.cpp
+++ b/src/server/game/Entities/Item/Container/Bag.cpp
@@ -27,7 +27,6 @@
Bag::Bag(): Item()
{
- m_objectType |= TYPEMASK_CONTAINER;
m_objectTypeId = TYPEID_CONTAINER;
m_entityFragments.Add(WowCS::EntityFragment::Tag_Container, false);
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index 20705e3036e..a5ff70aa4ca 100644
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -482,7 +482,6 @@ void ItemAdditionalLoadInfo::Init(std::unordered_map<ObjectGuid::LowType, ItemAd
Item::Item()
{
- m_objectType |= TYPEMASK_ITEM;
m_objectTypeId = TYPEID_ITEM;
m_entityFragments.Add(WowCS::EntityFragment::Tag_Item, false);
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index aa090bc5c1b..8375032413f 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -70,7 +70,6 @@ constexpr float VisibilityDistances[AsUnderlyingType(VisibilityDistanceType::Max
Object::Object() : m_scriptRef(this, NoopObjectDeleter())
{
m_objectTypeId = TYPEID_OBJECT;
- m_objectType = TYPEMASK_OBJECT;
m_updateFlag.Clear();
m_entityFragments.Add(WowCS::EntityFragment::CGObject, false);
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index e049ca95fae..d9f8e039392 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -189,6 +189,8 @@ static constexpr Milliseconds const HEARTBEAT_INTERVAL = 5s + 200ms;
class TC_GAME_API Object
{
+ ObjectGuid m_guid;
+
public:
virtual ~Object();
@@ -212,7 +214,7 @@ class TC_GAME_API Object
void ReplaceAllDynamicFlags(uint32 flag) { SetUpdateFieldValue(m_values.ModifyValue(&Object::m_objectData).ModifyValue(&UF::ObjectData::DynamicFlags), flag); }
TypeID GetTypeId() const { return m_objectTypeId; }
- bool isType(uint16 mask) const { return (mask & m_objectType) != 0; }
+ bool isType(TypeMask mask) const { return (ObjectTypeMask[m_objectTypeId] & mask) != 0; }
virtual void BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) const;
void SendUpdateToPlayer(Player* player);
@@ -451,8 +453,6 @@ class TC_GAME_API Object
virtual void BuildValuesUpdateWithFlag(ByteBuffer* data, UF::UpdateFieldFlag flags, Player const* target) const;
protected:
- uint16 m_objectType;
-
TypeID m_objectTypeId;
CreateObjectBits m_updateFlag;
WowCS::EntityFragmentsHolder m_entityFragments;
@@ -464,7 +464,6 @@ class TC_GAME_API Object
bool m_objectUpdated;
private:
- ObjectGuid m_guid;
bool m_inWorld;
bool m_isNewObject;
bool m_isDestroyedObject;
diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h
index 7126b3c8762..51744804ffa 100644
--- a/src/server/game/Entities/Object/ObjectGuid.h
+++ b/src/server/game/Entities/Object/ObjectGuid.h
@@ -32,7 +32,7 @@
#include <unordered_set>
#include <vector>
-enum TypeID
+enum TypeID : uint8
{
TYPEID_OBJECT = 0,
TYPEID_ITEM = 1,
@@ -54,25 +54,43 @@ enum TypeID
enum TypeMask
{
- TYPEMASK_OBJECT = 0x0001,
- TYPEMASK_ITEM = 0x0002,
- TYPEMASK_CONTAINER = 0x0004,
- TYPEMASK_AZERITE_EMPOWERED_ITEM = 0x0008,
- TYPEMASK_AZERITE_ITEM = 0x0010,
- TYPEMASK_UNIT = 0x0020,
- TYPEMASK_PLAYER = 0x0040,
- TYPEMASK_ACTIVE_PLAYER = 0x0080,
- TYPEMASK_GAMEOBJECT = 0x0100,
- TYPEMASK_DYNAMICOBJECT = 0x0200,
- TYPEMASK_CORPSE = 0x0400,
- TYPEMASK_AREATRIGGER = 0x0800,
- TYPEMASK_SCENEOBJECT = 0x1000,
- TYPEMASK_CONVERSATION = 0x2000,
+ TYPEMASK_OBJECT = 1 << TYPEID_OBJECT,
+ TYPEMASK_ITEM = 1 << TYPEID_ITEM,
+ TYPEMASK_CONTAINER = 1 << TYPEID_CONTAINER,
+ TYPEMASK_AZERITE_EMPOWERED_ITEM = 1 << TYPEID_AZERITE_EMPOWERED_ITEM,
+ TYPEMASK_AZERITE_ITEM = 1 << TYPEID_AZERITE_ITEM,
+ TYPEMASK_UNIT = 1 << TYPEID_UNIT,
+ TYPEMASK_PLAYER = 1 << TYPEID_PLAYER,
+ TYPEMASK_ACTIVE_PLAYER = 1 << TYPEID_ACTIVE_PLAYER,
+ TYPEMASK_GAMEOBJECT = 1 << TYPEID_GAMEOBJECT,
+ TYPEMASK_DYNAMICOBJECT = 1 << TYPEID_DYNAMICOBJECT,
+ TYPEMASK_CORPSE = 1 << TYPEID_CORPSE,
+ TYPEMASK_AREATRIGGER = 1 << TYPEID_AREATRIGGER,
+ TYPEMASK_SCENEOBJECT = 1 << TYPEID_SCENEOBJECT,
+ TYPEMASK_CONVERSATION = 1 << TYPEID_CONVERSATION,
TYPEMASK_SEER = TYPEMASK_UNIT | TYPEMASK_PLAYER | TYPEMASK_DYNAMICOBJECT,
TYPEMASK_WORLDOBJECT = TYPEMASK_UNIT | TYPEMASK_GAMEOBJECT | TYPEMASK_DYNAMICOBJECT | TYPEMASK_CORPSE | TYPEMASK_AREATRIGGER | TYPEMASK_SCENEOBJECT | TYPEMASK_CONVERSATION
};
+inline constexpr std::array<uint32, NUM_CLIENT_OBJECT_TYPES> ObjectTypeMask =
+{
+ TYPEMASK_OBJECT,
+ TYPEMASK_OBJECT | TYPEMASK_ITEM,
+ TYPEMASK_OBJECT | TYPEMASK_ITEM | TYPEMASK_CONTAINER,
+ TYPEMASK_OBJECT | TYPEMASK_ITEM | TYPEMASK_AZERITE_EMPOWERED_ITEM,
+ TYPEMASK_OBJECT | TYPEMASK_ITEM | TYPEMASK_AZERITE_ITEM,
+ TYPEMASK_OBJECT | TYPEMASK_UNIT,
+ TYPEMASK_OBJECT | TYPEMASK_UNIT | TYPEMASK_PLAYER,
+ TYPEMASK_OBJECT | TYPEMASK_UNIT | TYPEMASK_PLAYER | TYPEMASK_ACTIVE_PLAYER,
+ TYPEMASK_OBJECT | TYPEMASK_GAMEOBJECT,
+ TYPEMASK_OBJECT | TYPEMASK_DYNAMICOBJECT,
+ TYPEMASK_OBJECT | TYPEMASK_CORPSE,
+ TYPEMASK_OBJECT | TYPEMASK_AREATRIGGER,
+ TYPEMASK_OBJECT | TYPEMASK_SCENEOBJECT,
+ TYPEMASK_OBJECT | TYPEMASK_CONVERSATION
+};
+
enum class HighGuid
{
Null = 0,
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 3014b1b19f9..3948dd8f73e 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -158,7 +158,6 @@ static uint32 copseReclaimDelay[MAX_DEATH_COUNT] = { 30, 60, 120 };
Player::Player(WorldSession* session) : Unit(true), m_sceneMgr(this)
{
- m_objectType |= TYPEMASK_PLAYER;
m_objectTypeId = TYPEID_PLAYER;
m_entityFragments.Add(WowCS::EntityFragment::Tag_Player, false);
diff --git a/src/server/game/Entities/SceneObject/SceneObject.cpp b/src/server/game/Entities/SceneObject/SceneObject.cpp
index 9ac7394fd81..46875c51b06 100644
--- a/src/server/game/Entities/SceneObject/SceneObject.cpp
+++ b/src/server/game/Entities/SceneObject/SceneObject.cpp
@@ -28,7 +28,6 @@
SceneObject::SceneObject() : WorldObject(false)
{
- m_objectType |= TYPEMASK_SCENEOBJECT;
m_objectTypeId = TYPEID_SCENEOBJECT;
m_updateFlag.Stationary = true;
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 4663743904e..688a0618f9c 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -315,7 +315,6 @@ Unit::Unit(bool isWorldObject) :
m_threatManager(this), m_aiLocked(false), _playHoverAnim(false), _aiAnimKitId(0), _movementAnimKitId(0), _meleeAnimKitId(0),
_spellHistory(std::make_unique<SpellHistory>(this))
{
- m_objectType |= TYPEMASK_UNIT;
m_objectTypeId = TYPEID_UNIT;
m_updateFlag.MovementUpdate = true;