diff options
| -rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/AreaTrigger/AreaTrigger.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Conversation/Conversation.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Corpse/Corpse.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/DynamicObject/DynamicObject.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Item/Container/Bag.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Item/Item.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Object.h | 7 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/ObjectGuid.h | 48 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/SceneObject/SceneObject.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 1 |
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; |
