diff options
| author | Shauren <shauren.trinity@gmail.com> | 2018-12-09 14:45:03 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2018-12-09 14:45:03 +0100 |
| commit | f94deace764f0b8d99249760d2bc2e85c891c387 (patch) | |
| tree | 4c7c56f34768fc7aef05268061a12845c5bf67ce /src/server/game/Entities/AreaTrigger | |
| parent | 8725eec9c1c15f3e76bd9d524d4a5d8d0b3f0a44 (diff) | |
| parent | a70030ff252b266d12023ffada2a309409c1ccdb (diff) | |
Merge branch 'bfa'
Diffstat (limited to 'src/server/game/Entities/AreaTrigger')
3 files changed, 21 insertions, 13 deletions
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index b03bdab76ce..4e4e70e1b0a 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -46,7 +46,8 @@ AreaTrigger::AreaTrigger() : WorldObject(false), MapObject(), _aurEff(nullptr), m_objectType |= TYPEMASK_AREATRIGGER; m_objectTypeId = TYPEID_AREATRIGGER; - m_updateFlag = UPDATEFLAG_STATIONARY_POSITION | UPDATEFLAG_AREATRIGGER; + m_updateFlag.Stationary = true; + m_updateFlag.AreaTrigger = true; m_valuesCount = AREATRIGGER_END; _dynamicValuesCount = AREATRIGGER_DYNAMIC_END; @@ -142,7 +143,7 @@ bool AreaTrigger::Create(uint32 spellMiscId, Unit* caster, Unit* target, SpellIn { AreaTriggerCircularMovementInfo cmi = GetMiscTemplate()->CircularMovementInfo; if (target && GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ATTACHED)) - cmi.TargetGUID = target->GetGUID(); + cmi.PathTarget = target->GetGUID(); else cmi.Center = pos; @@ -637,12 +638,12 @@ void AreaTrigger::InitSplines(std::vector<G3D::Vector3> splinePoints, uint32 tim { if (_reachedDestination) { - WorldPackets::AreaTrigger::AreaTriggerReShape reshape; + WorldPackets::AreaTrigger::AreaTriggerRePath reshape; reshape.TriggerGUID = GetGUID(); SendMessageToSet(reshape.Write(), true); } - WorldPackets::AreaTrigger::AreaTriggerReShape reshape; + WorldPackets::AreaTrigger::AreaTriggerRePath reshape; reshape.TriggerGUID = GetGUID(); reshape.AreaTriggerSpline = boost::in_place(); reshape.AreaTriggerSpline->ElapsedTimeForMovement = GetElapsedTimeForMovement(); @@ -664,7 +665,7 @@ bool AreaTrigger::HasSplines() const void AreaTrigger::InitCircularMovement(AreaTriggerCircularMovementInfo const& cmi, uint32 timeToTarget) { // Circular movement requires either a center position or an attached unit - ASSERT(cmi.Center.is_initialized() || cmi.TargetGUID.is_initialized()); + ASSERT(cmi.Center.is_initialized() || cmi.PathTarget.is_initialized()); // should be sent in object create packets only m_uint32Values[AREATRIGGER_TIME_TO_TARGET] = timeToTarget; @@ -676,7 +677,7 @@ void AreaTrigger::InitCircularMovement(AreaTriggerCircularMovementInfo const& cm if (IsInWorld()) { - WorldPackets::AreaTrigger::AreaTriggerReShape reshape; + WorldPackets::AreaTrigger::AreaTriggerRePath reshape; reshape.TriggerGUID = GetGUID(); reshape.AreaTriggerCircularMovement = _circularMovementInfo; @@ -691,11 +692,11 @@ bool AreaTrigger::HasCircularMovement() const Position const* AreaTrigger::GetCircularMovementCenterPosition() const { - if (_circularMovementInfo.is_initialized()) + if (!_circularMovementInfo.is_initialized()) return nullptr; - if (_circularMovementInfo->TargetGUID.is_initialized()) - if (WorldObject* center = ObjectAccessor::GetWorldObject(*this, *_circularMovementInfo->TargetGUID)) + if (_circularMovementInfo->PathTarget.is_initialized()) + if (WorldObject* center = ObjectAccessor::GetWorldObject(*this, *_circularMovementInfo->PathTarget)) return center; if (_circularMovementInfo->Center.is_initialized()) diff --git a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp index 633988b17b0..431c4cc7d57 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp @@ -96,6 +96,9 @@ AreaTriggerMiscTemplate::AreaTriggerMiscTemplate() MorphCurveId = 0; FacingCurveId = 0; + AnimId = 0; + AnimKitId = 0; + DecalPropertiesId = 0; TimeToTarget = 0; diff --git a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h index 35be0f40f7f..2371c65cf09 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h +++ b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h @@ -36,10 +36,11 @@ enum AreaTriggerFlags AREATRIGGER_FLAG_HAS_FOLLOWS_TERRAIN = 0x00010, // NYI AREATRIGGER_FLAG_UNK1 = 0x00020, AREATRIGGER_FLAG_HAS_TARGET_ROLL_PITCH_YAW = 0x00040, // NYI - AREATRIGGER_FLAG_UNK2 = 0x00080, + AREATRIGGER_FLAG_HAS_ANIM_ID = 0x00080, AREATRIGGER_FLAG_UNK3 = 0x00100, - AREATRIGGER_FLAG_UNK4 = 0x00200, - AREATRIGGER_FLAG_HAS_CIRCULAR_MOVEMENT = 0x00400 + AREATRIGGER_FLAG_HAS_ANIM_KIT_ID = 0x00200, + AREATRIGGER_FLAG_HAS_CIRCULAR_MOVEMENT = 0x00400, + AREATRIGGER_FLAG_UNK5 = 0x00800, }; enum AreaTriggerTypes @@ -96,7 +97,7 @@ struct AreaTriggerScaleInfo struct AreaTriggerCircularMovementInfo { - Optional<ObjectGuid> TargetGUID; + Optional<ObjectGuid> PathTarget; Optional<TaggedPosition<Position::XYZ>> Center; bool CounterClockwise = false; bool CanLoop = false; @@ -190,6 +191,9 @@ public: uint32 MorphCurveId; uint32 FacingCurveId; + int32 AnimId; + int32 AnimKitId; + uint32 DecalPropertiesId; uint32 TimeToTarget; |
