Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
AreaTrigger.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "AreaTrigger.h"
7#include "Log.h"
8#include "ObjectAccessor.h"
9#include "SpellInfo.h"
10#include "Unit.h"
11
21
23{
25 if (!IsInWorld())
26 {
27 sObjectAccessor->AddObject(this);
29 }
30}
31
33{
35 if (IsInWorld())
36 {
37 if (!IsInWorld())
38 return;
39
41 sObjectAccessor->RemoveObject(this);
42 }
43}
44
45bool AreaTrigger::CreateAreaTrigger(uint32 guidlow, uint32 triggerEntry, Unit* caster, SpellInfo const* spell, Position const& pos)
46{
47 SetMap(caster->GetMap());
48 Relocate(pos);
49 if (!IsPositionValid())
50 {
51 SF_LOG_ERROR("sql.sql", "AreaTrigger (spell %u) not created. Invalid coordinates (X: %f Y: %f)", spell->Id, GetPositionX(), GetPositionY());
52 return false;
53 }
54
56
57 SetEntry(triggerEntry);
58 SetDuration(spell->GetDuration());
59
60 SetObjectScale(1.0f);
61
66 //AREATRIGGER_FIELD_EXPLICIT_SCALE // NYI
67
68 if (!GetMap()->AddToMap(this))
69 return false;
70
71 return true;
72}
73
75{
76 if (GetDuration() > int32(p_time))
77 _duration -= p_time;
78 else
79 Remove(); // expired
80
81 WorldObject::Update(p_time);
82}
83
std::int32_t int32
Definition Define.h:73
std::uint32_t uint32
Definition Define.h:77
#define SF_LOG_ERROR(filterType__,...)
Definition Log.h:143
@ TYPEID_AREATRIGGER
Definition Object.h:59
@ TYPEMASK_AREATRIGGER
Definition Object.h:45
#define sObjectAccessor
@ HIGHGUID_AREATRIGGER
@ UPDATEFLAG_STATIONARY_POSITION
Definition UpdateData.h:31
@ AREATRIGGER_FIELD_DURATION
@ AREATRIGGER_FIELD_CASTER
@ AREATRIGGER_FIELD_SPELL_VISUAL_ID
@ AREATRIGGER_FIELD_SPELL_ID
@ AREATRIGGER_END
void Update(uint32 p_time)
int32 _duration
Definition AreaTrigger.h:32
bool CreateAreaTrigger(uint32 guidlow, uint32 triggerEntry, Unit *caster, SpellInfo const *spell, Position const &pos)
void RemoveFromWorld()
void SetDuration(int32 newDuration)
Definition AreaTrigger.h:28
int32 GetDuration() const
Definition AreaTrigger.h:27
void AddToWorld()
uint16 m_objectType
Definition Object.h:242
uint64 GetGUID() const
Definition Object.h:119
bool IsInWorld() const
Definition Object.h:114
uint16 m_valuesCount
Definition Object.h:256
virtual void AddToWorld()
Definition Object.cpp:148
void SetEntry(uint32 entry)
Definition Object.h:126
virtual void SetObjectScale(float scale)
Definition Object.h:129
void SetUInt32Value(uint16 index, uint32 value)
Definition Object.cpp:1038
uint16 m_updateFlag
Definition Object.h:245
TypeID m_objectTypeId
Definition Object.h:244
void SetUInt64Value(uint16 index, uint64 value)
Definition Object.cpp:1079
uint32 SpellVisual[2]
Definition SpellInfo.h:219
uint32 Id
Definition SpellInfo.h:160
int32 GetDuration() const
Definition Unit.h:1367
void _Create(uint32 guidlow, HighGuid guidhigh, uint32 phaseMask)
Definition Object.cpp:1581
uint32 GetPhaseMask() const
Definition Object.h:643
Map * GetMap() const
Definition Object.h:740
virtual void RemoveFromWorld()
Definition Object.cpp:1587
void SendObjectDeSpawnAnim(uint64 guid)
Definition Object.cpp:2503
virtual void SetMap(Map *map)
Definition Object.cpp:2514
void AddObjectToRemoveList()
Definition Object.cpp:2550
WorldObject(bool isWorldObject)
Definition Object.cpp:1514
virtual void Update(uint32)
Definition Object.h:616
bool IsPositionValid() const
Definition Object.cpp:2049
float GetPositionX() const
Definition Object.h:328
float GetPositionY() const
Definition Object.h:329
void Relocate(float x, float y)
Definition Object.h:302