28void UpdatePosition(VignetteData& vignette,
WorldObject const* owner)
33 vignette.WMOGroupID = wmoLocation->GroupId;
34 vignette.WMODoodadPlacementID = wmoLocation->UniqueId;
38void UpdateHealth(VignetteData& vignette,
Unit const* owner)
43template<WorldPackets::Vignette::VignetteDataSet WorldPackets::Vignette::VignetteUpdate::* Field>
44void SendVignetteUpdate(VignetteData
const& vignette,
WorldObject const* owner)
50 vignette.FillPacket(vignetteUpdate.*
Field);
51 vignetteUpdate.
Write();
53 auto sender = [&](
Player const* receiver)
55 if (
CanSee(receiver, vignette))
56 receiver->SendDirectMessage(vignetteUpdate.
GetRawPacket());
83 std::unique_ptr<VignetteData> vignette = std::make_unique<VignetteData>();
85 vignette->Object = owner->
GetGUID();
87 vignette->Data = vignetteData;
89 UpdatePosition(*vignette, owner);
91 UpdateHealth(*vignette, unitOwner);
96 SendVignetteUpdate<&WorldPackets::Vignette::VignetteUpdate::Added>(*vignette, owner);
103 UpdatePosition(vignette, owner);
105 UpdateHealth(vignette, unitOwner);
110 SendVignetteUpdate<&WorldPackets::Vignette::VignetteUpdate::Updated>(vignette, owner);
static bool IsPlayerMeetingCondition(Player const *player, uint32 conditionId)
Class used to access individual fields of database query result.
void RemoveInfiniteAOIVignette(Vignettes::VignetteData *vignette)
void AddInfiniteAOIVignette(Vignettes::VignetteData *vignette)
ObjectGuid::LowType GenerateLowGuid()
static Unit * ToUnit(Object *o)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
bool IsQuestRewarded(uint32 quest_id) const
uint64 GetMaxHealth() const
constexpr uint32 GetMapId() const
virtual void SendMessageToSet(WorldPacket const *data, bool self) const
WmoLocation const * GetCurrentWmo() const
float GetVisibilityRange() const
WorldPacket const * GetRawPacket() const
WorldPacket const * Write() override
std::vector< ObjectGuid > Removed
std::unique_ptr< VignetteData > Create(VignetteEntry const *vignetteData, WorldObject const *owner)
void Update(VignetteData &vignette, WorldObject const *owner)
bool CanSee(Player const *player, VignetteData const &vignette)
void Remove(VignetteData &vignette, WorldObject const *owner)
static void VisitWorldObjects(WorldObject const *obj, T &visitor, float radius, bool dont_load=true)
constexpr void GetPosition(float &x, float &y) const
uint32 VisibleTrackingQuestID
EnumFlag< VignetteFlags > GetFlags() const
bool IsInfiniteAOI() const
VignetteEntry const * Data
uint32 WMODoodadPlacementID
void FillPacket(WorldPackets::Vignette::VignetteDataSet &dataSet) const
std::vector< ObjectGuid > IDs
std::vector< VignetteData > Data
TaggedPosition<::Position::XYZ > Position
uint32 WMODoodadPlacementID