TrinityCore
SceneObject.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef SceneObject_h__
19#define SceneObject_h__
20
21#include "Object.h"
22#include "GridObject.h"
23
24struct SceneTemplate;
25
26enum class SceneType : uint32
27{
28 Normal = 0,
29 PetBattle = 1
30};
31
32class TC_GAME_API SceneObject final : public WorldObject, public GridObject<SceneObject>
33{
34public:
37
38protected:
39 void BuildValuesCreate(ByteBuffer* data, Player const* target) const override;
40 void BuildValuesUpdate(ByteBuffer* data, Player const* target) const override;
41 void ClearUpdateMask(bool remove) override;
42
43public:
44 void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
45 UF::SceneObjectData::Mask const& requestedSceneObjectMask, Player const* target) const;
46
47 struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
48 {
49 explicit ValuesUpdateForPlayerWithMaskSender(SceneObject const* owner) : Owner(owner) { }
50
54
55 void operator()(Player const* player) const;
56 };
57
58 void AddToWorld() override;
59 void RemoveFromWorld() override;
60
61 void Update(uint32 diff) override;
62 void Remove();
63
64 static SceneObject* CreateSceneObject(uint32 sceneId, Unit* creator, Position const& pos, ObjectGuid privateObjectOwner);
65 bool Create(ObjectGuid::LowType lowGuid, SceneType type, uint32 sceneId, uint32 scriptPackageId, Map* map, Unit* creator,
66 Position const& pos, ObjectGuid privateObjectOwner);
67
68 ObjectGuid GetCreatorGUID() const override { return *m_sceneObjectData->CreatedBy; }
69 ObjectGuid GetOwnerGUID() const override { return *m_sceneObjectData->CreatedBy; }
70 uint32 GetFaction() const override { return 0; }
71
72 float GetStationaryX() const override { return _stationaryPosition.GetPositionX(); }
73 float GetStationaryY() const override { return _stationaryPosition.GetPositionY(); }
74 float GetStationaryZ() const override { return _stationaryPosition.GetPositionZ(); }
75 float GetStationaryO() const override { return _stationaryPosition.GetOrientation(); }
76 void RelocateStationaryPosition(Position const& pos) { _stationaryPosition.Relocate(pos); }
77
78 void SetCreatedBySpellCast(ObjectGuid castId) { _createdBySpellCast = castId; }
79
81
82private:
83 bool ShouldBeRemoved() const;
84
87};
88
89#endif // SceneObject_h__
#define TC_GAME_API
Definition: Define.h:123
uint32_t uint32
Definition: Define.h:142
SceneType
Definition: SceneObject.h:27
Definition: Map.h:189
uint64 LowType
Definition: ObjectGuid.h:278
virtual void BuildValuesCreate(ByteBuffer *data, Player const *target) const =0
virtual void ClearUpdateMask(bool remove)
Definition: Object.cpp:790
virtual void BuildValuesUpdate(ByteBuffer *data, Player const *target) const =0
float GetStationaryZ() const override
Definition: SceneObject.h:74
float GetStationaryX() const override
Definition: SceneObject.h:72
UF::UpdateField< UF::SceneObjectData, 0, TYPEID_SCENEOBJECT > m_sceneObjectData
Definition: SceneObject.h:80
uint32 GetFaction() const override
Definition: SceneObject.h:70
Position _stationaryPosition
Definition: SceneObject.h:85
void RelocateStationaryPosition(Position const &pos)
Definition: SceneObject.h:76
ObjectGuid GetOwnerGUID() const override
Definition: SceneObject.h:69
ObjectGuid _createdBySpellCast
Definition: SceneObject.h:86
float GetStationaryY() const override
Definition: SceneObject.h:73
ObjectGuid GetCreatorGUID() const override
Definition: SceneObject.h:68
float GetStationaryO() const override
Definition: SceneObject.h:75
void SetCreatedBySpellCast(ObjectGuid castId)
Definition: SceneObject.h:78
Definition: Unit.h:627
void AddToWorld() override
Definition: Object.cpp:1011
void RemoveFromWorld() override
Definition: Object.cpp:1017
virtual void Update(uint32 diff)
Definition: Object.cpp:898
std::unique_ptr< VignetteData > Create(VignetteEntry const *vignetteData, WorldObject const *owner)
Definition: Vignette.cpp:72
void Remove(VignetteData &vignette, WorldObject const *owner)
Definition: Vignette.cpp:100
ValuesUpdateForPlayerWithMaskSender(SceneObject const *owner)
Definition: SceneObject.h:49