aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-03-07 13:31:12 +0100
committerShauren <shauren.trinity@gmail.com>2024-03-07 13:31:12 +0100
commitd397b636d48f55b5e76d77c36ded33b2c8bbe295 (patch)
treefee600afb80320d4cdc81580708d92f0e64a1e97 /src/server/game/Entities/Object
parent45ee989c70682c001d4467d97bf1ecedcf7dbcc3 (diff)
Core/Objects: Keep current WMO info on position updates and use it in party member state packets
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Object.cpp1
-rw-r--r--src/server/game/Entities/Object/Object.h5
2 files changed, 4 insertions, 2 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index afc986f9052..51c85f241df 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -998,6 +998,7 @@ void WorldObject::ProcessPositionDataChanged(PositionFullTerrainStatus const& da
m_outdoors = data.outdoors;
m_staticFloorZ = data.floorZ;
m_liquidStatus = data.liquidStatus;
+ m_currentWmo = data.wmoLocation;
}
void WorldObject::AddToWorld()
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index cbb0486ea90..07cf03d3e28 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -22,6 +22,7 @@
#include "Duration.h"
#include "Errors.h"
#include "EventProcessor.h"
+#include "MapDefines.h"
#include "ModelIgnoreFlags.h"
#include "MovementInfo.h"
#include "ObjectDefines.h"
@@ -62,10 +63,8 @@ class WorldPacket;
class ZoneScript;
struct FactionTemplateEntry;
struct Loot;
-struct PositionFullTerrainStatus;
struct QuaternionData;
struct SpellPowerCost;
-enum ZLiquidStatus : uint32;
namespace WorldPackets
{
@@ -530,6 +529,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation
bool IsInWorldPvpZone() const;
bool IsOutdoors() const { return m_outdoors; }
ZLiquidStatus GetLiquidStatus() const { return m_liquidStatus; }
+ WmoLocation const* GetCurrentWmo() const { return m_currentWmo ? &*m_currentWmo : nullptr; }
InstanceScript* GetInstanceScript() const;
@@ -789,6 +789,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation
float m_staticFloorZ;
bool m_outdoors;
ZLiquidStatus m_liquidStatus;
+ Optional<WmoLocation> m_currentWmo;
//these functions are used mostly for Relocate() and Corpse/Player specific stuff...
//use them ONLY in LoadFromDB()/Create() funcs and nowhere else!