aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-09-16 22:22:14 +0200
committerShauren <shauren.trinity@gmail.com>2021-09-16 22:22:14 +0200
commitee73948a64fc3d767d37cd3cc7f44358c5274b83 (patch)
tree9a5bb079ca7b1f1945211a6328fa52fa9f79f8aa /src/server/game/Entities
parentca67286905aba7614a4a5f9e6f3bb6a0132a49f3 (diff)
Core/AreaTriggers: Rename spell_areatrigger* tables to areatrigger_create_properties* according to last MiscValue research for areatrigger effects
* Move areatrigger_template.DataX to areatrigger_create_properties.ShapeDataX
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTrigger.cpp138
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTrigger.h12
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp82
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h86
-rw-r--r--src/server/game/Entities/Object/Object.cpp93
5 files changed, 207 insertions, 204 deletions
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
index 870bf676b7a..195837c8ebb 100644
--- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
+++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
@@ -41,7 +41,7 @@
AreaTrigger::AreaTrigger() : WorldObject(false), MapObject(), _aurEff(nullptr), _maxSearchRadius(0.0f),
_duration(0), _totalDuration(0), _timeSinceCreated(0), _previousCheckOrientation(std::numeric_limits<float>::infinity()),
_isRemoved(false), _reachedDestination(true), _lastSplineIndex(0), _movementTime(0),
- _areaTriggerMiscTemplate(nullptr), _areaTriggerTemplate(nullptr)
+ _areaTriggerCreateProperties(nullptr), _areaTriggerTemplate(nullptr)
{
m_objectType |= TYPEMASK_AREATRIGGER;
m_objectTypeId = TYPEID_AREATRIGGER;
@@ -84,7 +84,7 @@ void AreaTrigger::RemoveFromWorld()
}
}
-bool AreaTrigger::Create(uint32 spellMiscId, Unit* caster, Unit* target, SpellInfo const* spell, Position const& pos, int32 duration, SpellCastVisual spellVisual, ObjectGuid const& castId, AuraEffect const* aurEff)
+bool AreaTrigger::Create(uint32 areaTriggerCreatePropertiesId, Unit* caster, Unit* target, SpellInfo const* spell, Position const& pos, int32 duration, SpellCastVisual spellVisual, ObjectGuid const& castId, AuraEffect const* aurEff)
{
_targetGuid = target ? target->GetGUID() : ObjectGuid::Empty;
_aurEff = aurEff;
@@ -93,30 +93,30 @@ bool AreaTrigger::Create(uint32 spellMiscId, Unit* caster, Unit* target, SpellIn
Relocate(pos);
if (!IsPositionValid())
{
- TC_LOG_ERROR("entities.areatrigger", "AreaTrigger (spellMiscId %u) not created. Invalid coordinates (X: %f Y: %f)", spellMiscId, GetPositionX(), GetPositionY());
+ TC_LOG_ERROR("entities.areatrigger", "AreaTrigger (areaTriggerCreatePropertiesId %u) not created. Invalid coordinates (X: %f Y: %f)", areaTriggerCreatePropertiesId, GetPositionX(), GetPositionY());
return false;
}
- _areaTriggerMiscTemplate = sAreaTriggerDataStore->GetAreaTriggerMiscTemplate(spellMiscId);
- if (!_areaTriggerMiscTemplate)
+ _areaTriggerCreateProperties = sAreaTriggerDataStore->GetAreaTriggerCreateProperties(areaTriggerCreatePropertiesId);
+ if (!_areaTriggerCreateProperties)
{
- TC_LOG_ERROR("entities.areatrigger", "AreaTrigger (spellMiscId %u) not created. Invalid areatrigger miscid (%u)", spellMiscId, spellMiscId);
+ TC_LOG_ERROR("entities.areatrigger", "AreaTrigger (areaTriggerCreatePropertiesId %u) not created. Invalid areatrigger create properties id (%u)", areaTriggerCreatePropertiesId, areaTriggerCreatePropertiesId);
return false;
}
- _areaTriggerTemplate = _areaTriggerMiscTemplate->Template;
+ _areaTriggerTemplate = _areaTriggerCreateProperties->Template;
- Object::_Create(ObjectGuid::Create<HighGuid::AreaTrigger>(GetMapId(), GetTemplate()->Id.Id, caster->GetMap()->GenerateLowGuid<HighGuid::AreaTrigger>()));
+ Object::_Create(ObjectGuid::Create<HighGuid::AreaTrigger>(GetMapId(), GetTemplate() ? GetTemplate()->Id.Id : 0, caster->GetMap()->GenerateLowGuid<HighGuid::AreaTrigger>()));
+
+ if (GetTemplate())
+ SetEntry(GetTemplate()->Id.Id);
- SetEntry(GetTemplate()->Id.Id);
SetDuration(duration);
SetObjectScale(1.0f);
- if (GetTemplate()->IsPolygon())
- _maxSearchRadius = GetMiscTemplate()->GetPolygonMaxSearchRadius();
- else
- _maxSearchRadius = GetTemplate()->MaxSearchRadius;
+ _shape = GetCreateProperties()->Shape;
+ _maxSearchRadius = GetCreateProperties()->GetMaxSearchRadius();
auto areaTriggerData = m_values.ModifyValue(&AreaTrigger::m_areaTriggerData);
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::Caster), caster->GetGUID());
@@ -126,51 +126,51 @@ bool AreaTrigger::Create(uint32 spellMiscId, Unit* caster, Unit* target, SpellIn
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::SpellForVisuals), spell->Id);
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::SpellVisual).ModifyValue(&UF::SpellCastVisual::SpellXSpellVisualID), spellVisual.SpellXSpellVisualID);
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::SpellVisual).ModifyValue(&UF::SpellCastVisual::ScriptVisualID), spellVisual.ScriptVisualID);
- SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::TimeToTargetScale), GetMiscTemplate()->TimeToTargetScale != 0 ? GetMiscTemplate()->TimeToTargetScale : *m_areaTriggerData->Duration);
+ SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::TimeToTargetScale), GetCreateProperties()->TimeToTargetScale != 0 ? GetCreateProperties()->TimeToTargetScale : *m_areaTriggerData->Duration);
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::BoundsRadius2D), GetMaxSearchRadius());
- SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::DecalPropertiesID), GetMiscTemplate()->DecalPropertiesId);
+ SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::DecalPropertiesID), GetCreateProperties()->DecalPropertiesId);
- if (GetMiscTemplate()->ExtraScale.Data.Structured.StartTimeOffset)
- SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ExtraScaleCurve).ModifyValue(&UF::ScaleCurve::StartTimeOffset), GetMiscTemplate()->ExtraScale.Data.Structured.StartTimeOffset);
- if (GetMiscTemplate()->ExtraScale.Data.Structured.Points[0] || GetMiscTemplate()->ExtraScale.Data.Structured.Points[1])
+ if (GetCreateProperties()->ExtraScale.Data.Structured.StartTimeOffset)
+ SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ExtraScaleCurve).ModifyValue(&UF::ScaleCurve::StartTimeOffset), GetCreateProperties()->ExtraScale.Data.Structured.StartTimeOffset);
+ if (GetCreateProperties()->ExtraScale.Data.Structured.Points[0] || GetCreateProperties()->ExtraScale.Data.Structured.Points[1])
{
- Position point(GetMiscTemplate()->ExtraScale.Data.Structured.Points[0], GetMiscTemplate()->ExtraScale.Data.Structured.Points[1]);
+ Position point(GetCreateProperties()->ExtraScale.Data.Structured.Points[0], GetCreateProperties()->ExtraScale.Data.Structured.Points[1]);
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ExtraScaleCurve).ModifyValue(&UF::ScaleCurve::Points, 0), point);
}
- if (GetMiscTemplate()->ExtraScale.Data.Structured.Points[2] || GetMiscTemplate()->ExtraScale.Data.Structured.Points[3])
+ if (GetCreateProperties()->ExtraScale.Data.Structured.Points[2] || GetCreateProperties()->ExtraScale.Data.Structured.Points[3])
{
- Position point(GetMiscTemplate()->ExtraScale.Data.Structured.Points[2], GetMiscTemplate()->ExtraScale.Data.Structured.Points[3]);
+ Position point(GetCreateProperties()->ExtraScale.Data.Structured.Points[2], GetCreateProperties()->ExtraScale.Data.Structured.Points[3]);
SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ExtraScaleCurve).ModifyValue(&UF::ScaleCurve::Points, 1), point);
}
- if (GetMiscTemplate()->ExtraScale.Data.Raw[5])
- SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ExtraScaleCurve).ModifyValue(&UF::ScaleCurve::ParameterCurve), GetMiscTemplate()->ExtraScale.Data.Raw[5]);
- if (GetMiscTemplate()->ExtraScale.Data.Structured.OverrideActive)
- SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ExtraScaleCurve).ModifyValue(&UF::ScaleCurve::OverrideActive), GetMiscTemplate()->ExtraScale.Data.Structured.OverrideActive);
+ if (GetCreateProperties()->ExtraScale.Data.Raw[5])
+ SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ExtraScaleCurve).ModifyValue(&UF::ScaleCurve::ParameterCurve), GetCreateProperties()->ExtraScale.Data.Raw[5]);
+ if (GetCreateProperties()->ExtraScale.Data.Structured.OverrideActive)
+ SetUpdateFieldValue(areaTriggerData.ModifyValue(&UF::AreaTriggerData::ExtraScaleCurve).ModifyValue(&UF::ScaleCurve::OverrideActive), GetCreateProperties()->ExtraScale.Data.Structured.OverrideActive);
PhasingHandler::InheritPhaseShift(this, caster);
- if (target && GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ATTACHED))
+ if (target && GetTemplate() && GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ATTACHED))
{
m_movementInfo.transport.guid = target->GetGUID();
}
UpdateShape();
- uint32 timeToTarget = GetMiscTemplate()->TimeToTarget != 0 ? GetMiscTemplate()->TimeToTarget : *m_areaTriggerData->Duration;
+ uint32 timeToTarget = GetCreateProperties()->TimeToTarget != 0 ? GetCreateProperties()->TimeToTarget : *m_areaTriggerData->Duration;
- if (GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_CIRCULAR_MOVEMENT))
+ if (GetCreateProperties()->OrbitInfo)
{
- AreaTriggerOrbitInfo cmi = GetMiscTemplate()->OrbitInfo;
- if (target && GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ATTACHED))
- cmi.PathTarget = target->GetGUID();
+ AreaTriggerOrbitInfo orbit = *GetCreateProperties()->OrbitInfo;
+ if (target && GetTemplate() && GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ATTACHED))
+ orbit.PathTarget = target->GetGUID();
else
- cmi.Center = pos;
+ orbit.Center = pos;
- InitOrbit(cmi, timeToTarget);
+ InitOrbit(orbit, timeToTarget);
}
- else if (GetMiscTemplate()->HasSplines())
+ else if (GetCreateProperties()->HasSplines())
{
- InitSplineOffsets(GetMiscTemplate()->SplinePoints, timeToTarget);
+ InitSplineOffsets(GetCreateProperties()->SplinePoints, timeToTarget);
}
// movement on transport of areatriggers on unit is handled by themself
@@ -207,10 +207,10 @@ bool AreaTrigger::Create(uint32 spellMiscId, Unit* caster, Unit* target, SpellIn
return true;
}
-AreaTrigger* AreaTrigger::CreateAreaTrigger(uint32 spellMiscId, Unit* caster, Unit* target, SpellInfo const* spell, Position const& pos, int32 duration, SpellCastVisual spellVisual, ObjectGuid const& castId /*= ObjectGuid::Empty*/, AuraEffect const* aurEff /*= nullptr*/)
+AreaTrigger* AreaTrigger::CreateAreaTrigger(uint32 areaTriggerCreatePropertiesId, Unit* caster, Unit* target, SpellInfo const* spell, Position const& pos, int32 duration, SpellCastVisual spellVisual, ObjectGuid const& castId /*= ObjectGuid::Empty*/, AuraEffect const* aurEff /*= nullptr*/)
{
AreaTrigger* at = new AreaTrigger();
- if (!at->Create(spellMiscId, caster, target, spell, pos, duration, spellVisual, castId, aurEff))
+ if (!at->Create(areaTriggerCreatePropertiesId, caster, target, spell, pos, duration, spellVisual, castId, aurEff))
{
delete at;
return nullptr;
@@ -251,6 +251,9 @@ bool AreaTrigger::CreateServer(Map* map, AreaTriggerTemplate const* areaTriggerT
SetObjectScale(1.0f);
+ _shape = position.Shape;
+ _maxSearchRadius = _shape.GetMaxSearchRadius();
+
if (position.PhaseUseFlags || position.PhaseId || position.PhaseGroup)
PhasingHandler::InitDbPhaseShift(GetPhaseShift(), position.PhaseUseFlags, position.PhaseId, position.PhaseGroup);
@@ -275,7 +278,7 @@ void AreaTrigger::Update(uint32 diff)
{
UpdateOrbitPosition(diff);
}
- else if (GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ATTACHED))
+ else if (GetTemplate() && GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ATTACHED))
{
if (Unit* target = GetTarget())
GetMap()->AreaTriggerRelocation(this, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), target->GetOrientation());
@@ -338,7 +341,7 @@ void AreaTrigger::UpdateTargetList()
{
std::vector<Unit*> targetList;
- switch (GetTemplate()->Type)
+ switch (_shape.Type)
{
case AREATRIGGER_TYPE_SPHERE:
SearchUnitInSphere(targetList);
@@ -376,14 +379,14 @@ void AreaTrigger::SearchUnits(std::vector<Unit*>& targetList, float radius, bool
void AreaTrigger::SearchUnitInSphere(std::vector<Unit*>& targetList)
{
- float radius = GetTemplate()->SphereDatas.Radius;
- if (GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_DYNAMIC_SHAPE))
+ float radius = _shape.SphereDatas.Radius;
+ if (GetTemplate() && GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_DYNAMIC_SHAPE))
{
- if (GetMiscTemplate()->MorphCurveId)
+ if (GetCreateProperties()->MorphCurveId)
{
- radius = G3D::lerp(GetTemplate()->SphereDatas.Radius,
- GetTemplate()->SphereDatas.RadiusTarget,
- sDB2Manager.GetCurveValueAt(GetMiscTemplate()->MorphCurveId, GetProgress()));
+ radius = G3D::lerp(_shape.SphereDatas.Radius,
+ _shape.SphereDatas.RadiusTarget,
+ sDB2Manager.GetCurveValueAt(GetCreateProperties()->MorphCurveId, GetProgress()));
}
}
@@ -395,9 +398,9 @@ void AreaTrigger::SearchUnitInBox(std::vector<Unit*>& targetList)
SearchUnits(targetList, GetMaxSearchRadius(), false);
Position const& boxCenter = GetPosition();
- float extentsX = GetTemplate()->BoxDatas.Extents[0];
- float extentsY = GetTemplate()->BoxDatas.Extents[1];
- float extentsZ = GetTemplate()->BoxDatas.Extents[2];
+ float extentsX = _shape.BoxDatas.Extents[0];
+ float extentsY = _shape.BoxDatas.Extents[1];
+ float extentsZ = _shape.BoxDatas.Extents[2];
targetList.erase(std::remove_if(targetList.begin(), targetList.end(), [boxCenter, extentsX, extentsY, extentsZ](Unit* unit) -> bool
{
@@ -409,7 +412,7 @@ void AreaTrigger::SearchUnitInPolygon(std::vector<Unit*>& targetList)
{
SearchUnits(targetList, GetMaxSearchRadius(), false);
- float height = GetTemplate()->PolygonDatas.Height;
+ float height = _shape.PolygonDatas.Height;
float minZ = GetPositionZ() - height;
float maxZ = GetPositionZ() + height;
@@ -425,7 +428,7 @@ void AreaTrigger::SearchUnitInCylinder(std::vector<Unit*>& targetList)
{
SearchUnits(targetList, GetMaxSearchRadius(), false);
- float height = GetTemplate()->CylinderDatas.Height;
+ float height = _shape.CylinderDatas.Height;
float minZ = GetPositionZ() - height;
float maxZ = GetPositionZ() + height;
@@ -456,7 +459,7 @@ void AreaTrigger::HandleUnitEnterExit(std::vector<Unit*> const& newTargetList)
if (Player* player = unit->ToPlayer())
{
if (player->isDebugAreaTriggers)
- ChatHandler(player->GetSession()).PSendSysMessage(LANG_DEBUG_AREATRIGGER_ENTERED, GetTemplate()->Id.Id);
+ ChatHandler(player->GetSession()).PSendSysMessage(LANG_DEBUG_AREATRIGGER_ENTERED, GetEntry());
player->UpdateQuestObjectiveProgress(QUEST_OBJECTIVE_AREA_TRIGGER_ENTER, GetEntry(), 1);
}
@@ -473,7 +476,7 @@ void AreaTrigger::HandleUnitEnterExit(std::vector<Unit*> const& newTargetList)
if (Player* player = leavingUnit->ToPlayer())
{
if (player->isDebugAreaTriggers)
- ChatHandler(player->GetSession()).PSendSysMessage(LANG_DEBUG_AREATRIGGER_LEFT, GetTemplate()->Id.Id);
+ ChatHandler(player->GetSession()).PSendSysMessage(LANG_DEBUG_AREATRIGGER_LEFT, GetEntry());
player->UpdateQuestObjectiveProgress(QUEST_OBJECTIVE_AREA_TRIGGER_EXIT, GetEntry(), 1);
}
@@ -492,7 +495,7 @@ AreaTriggerTemplate const* AreaTrigger::GetTemplate() const
uint32 AreaTrigger::GetScriptId() const
{
- return GetTemplate()->ScriptId;
+ return GetTemplate() ? GetTemplate()->ScriptId : 0;
}
Unit* AreaTrigger::GetCaster() const
@@ -521,7 +524,7 @@ void AreaTrigger::UpdatePolygonOrientation()
if (G3D::fuzzyEq(_previousCheckOrientation, newOrientation))
return;
- _polygonVertices.assign(GetMiscTemplate()->PolygonVertices.begin(), GetMiscTemplate()->PolygonVertices.end());
+ _polygonVertices.assign(GetCreateProperties()->PolygonVertices.begin(), GetCreateProperties()->PolygonVertices.end());
float angleSin = std::sin(newOrientation);
float angleCos = std::cos(newOrientation);
@@ -608,7 +611,7 @@ bool AreaTrigger::CheckIsInPolygon2D(Position const* pos) const
void AreaTrigger::UpdateShape()
{
- if (GetTemplate()->IsPolygon())
+ if (_shape.IsPolygon())
UpdatePolygonOrientation();
}
@@ -648,7 +651,7 @@ void AreaTrigger::DoActions(Unit* unit)
{
Unit* caster = IsServerSide() ? unit : GetCaster();
- if (caster)
+ if (caster && GetTemplate())
{
for (AreaTriggerAction const& action : GetTemplate()->Actions)
{
@@ -679,9 +682,10 @@ void AreaTrigger::DoActions(Unit* unit)
void AreaTrigger::UndoActions(Unit* unit)
{
- for (AreaTriggerAction const& action : GetTemplate()->Actions)
- if (action.ActionType == AREATRIGGER_ACTION_CAST || action.ActionType == AREATRIGGER_ACTION_ADDAURA)
- unit->RemoveAurasDueToSpell(action.Param, GetCasterGuid());
+ if (GetTemplate())
+ for (AreaTriggerAction const& action : GetTemplate()->Actions)
+ if (action.ActionType == AREATRIGGER_ACTION_CAST || action.ActionType == AREATRIGGER_ACTION_ADDAURA)
+ unit->RemoveAurasDueToSpell(action.Param, GetCasterGuid());
}
void AreaTrigger::InitSplineOffsets(std::vector<Position> const& offsets, uint32 timeToTarget)
@@ -753,10 +757,10 @@ bool AreaTrigger::HasSplines() const
return bool(_spline);
}
-void AreaTrigger::InitOrbit(AreaTriggerOrbitInfo const& cmi, uint32 timeToTarget)
+void AreaTrigger::InitOrbit(AreaTriggerOrbitInfo const& orbit, uint32 timeToTarget)
{
// Circular movement requires either a center position or an attached unit
- ASSERT(cmi.Center.is_initialized() || cmi.PathTarget.is_initialized());
+ ASSERT(orbit.Center.is_initialized() || orbit.PathTarget.is_initialized());
// should be sent in object create packets only
DoWithSuppressingObjectUpdates([&]()
@@ -765,7 +769,7 @@ void AreaTrigger::InitOrbit(AreaTriggerOrbitInfo const& cmi, uint32 timeToTarget
const_cast<UF::AreaTriggerData&>(*m_areaTriggerData).ClearChanged(&UF::AreaTriggerData::TimeToTarget);
});
- _orbitInfo = cmi;
+ _orbitInfo = orbit;
_orbitInfo->TimeToTarget = timeToTarget;
_orbitInfo->ElapsedTimeForMovement = 0;
@@ -883,13 +887,13 @@ void AreaTrigger::UpdateSplinePosition(uint32 diff)
if (currentTimePercent <= 0.f)
return;
- if (GetMiscTemplate()->MoveCurveId)
+ if (GetCreateProperties()->MoveCurveId)
{
- float progress = sDB2Manager.GetCurveValueAt(GetMiscTemplate()->MoveCurveId, currentTimePercent);
+ float progress = sDB2Manager.GetCurveValueAt(GetCreateProperties()->MoveCurveId, currentTimePercent);
if (progress < 0.f || progress > 1.f)
{
- TC_LOG_ERROR("entities.areatrigger", "AreaTrigger (Id: %u, SpellMiscId: %u) has wrong progress (%f) caused by curve calculation (MoveCurveId: %u)",
- GetTemplate()->Id.Id, GetMiscTemplate()->MiscId, progress, GetMiscTemplate()->MorphCurveId);
+ TC_LOG_ERROR("entities.areatrigger", "AreaTrigger (Id: %u, AreaTriggerCreatePropertiesId: %u) has wrong progress (%f) caused by curve calculation (MoveCurveId: %u)",
+ GetEntry(), GetCreateProperties()->Id, progress, GetCreateProperties()->MorphCurveId);
}
else
currentTimePercent = progress;
@@ -903,7 +907,7 @@ void AreaTrigger::UpdateSplinePosition(uint32 diff)
_spline->evaluate_percent(lastPositionIndex, percentFromLastPoint, currentPosition);
float orientation = GetOrientation();
- if (GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_FACE_MOVEMENT_DIR))
+ if (GetTemplate() && GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_FACE_MOVEMENT_DIR))
{
G3D::Vector3 const& nextPoint = _spline->getPoint(lastPositionIndex + 1);
orientation = GetAngle(nextPoint.x, nextPoint.y);
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.h b/src/server/game/Entities/AreaTrigger/AreaTrigger.h
index 5e60736be94..f6bdaf8f583 100644
--- a/src/server/game/Entities/AreaTrigger/AreaTrigger.h
+++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.h
@@ -66,11 +66,11 @@ class TC_GAME_API AreaTrigger : public WorldObject, public GridObject<AreaTrigge
bool IsNeverVisibleFor(WorldObject const* /*seer*/) const override { return IsServerSide(); }
private:
- bool Create(uint32 spellMiscId, Unit* caster, Unit* target, SpellInfo const* spell, Position const& pos, int32 duration, SpellCastVisual spellVisual, ObjectGuid const& castId, AuraEffect const* aurEff);
+ bool Create(uint32 areaTriggerCreatePropertiesId, Unit* caster, Unit* target, SpellInfo const* spell, Position const& pos, int32 duration, SpellCastVisual spellVisual, ObjectGuid const& castId, AuraEffect const* aurEff);
bool CreateServer(Map* map, AreaTriggerTemplate const* areaTriggerTemplate, AreaTriggerSpawn const& position);
public:
- static AreaTrigger* CreateAreaTrigger(uint32 spellMiscId, Unit* caster, Unit* target, SpellInfo const* spell, Position const& pos, int32 duration, SpellCastVisual spellVisual, ObjectGuid const& castId = ObjectGuid::Empty, AuraEffect const* aurEff = nullptr);
+ static AreaTrigger* CreateAreaTrigger(uint32 areaTriggerCreatePropertiesId, Unit* caster, Unit* target, SpellInfo const* spell, Position const& pos, int32 duration, SpellCastVisual spellVisual, ObjectGuid const& castId = ObjectGuid::Empty, AuraEffect const* aurEff = nullptr);
bool LoadFromDB(ObjectGuid::LowType spawnId, Map* map, bool addToMap, bool allowDuplicate);
void Update(uint32 diff) override;
@@ -88,7 +88,7 @@ class TC_GAME_API AreaTrigger : public WorldObject, public GridObject<AreaTrigge
GuidUnorderedSet const& GetInsideUnits() const { return _insideUnits; }
- AreaTriggerMiscTemplate const* GetMiscTemplate() const { return _areaTriggerMiscTemplate; }
+ AreaTriggerCreateProperties const* GetCreateProperties() const { return _areaTriggerCreateProperties; }
AreaTriggerTemplate const* GetTemplate() const;
uint32 GetScriptId() const;
@@ -99,6 +99,7 @@ class TC_GAME_API AreaTrigger : public WorldObject, public GridObject<AreaTrigge
uint32 GetFaction() const override;
+ AreaTriggerShapeInfo const& GetShape() const { return _shape; }
float GetMaxSearchRadius() const { return _maxSearchRadius; }
Position const& GetRollPitchYaw() const { return _rollPitchYaw; }
Position const& GetTargetRollPitchYaw() const { return _targetRollPitchYaw; }
@@ -108,7 +109,7 @@ class TC_GAME_API AreaTrigger : public WorldObject, public GridObject<AreaTrigge
::Movement::Spline<int32> const& GetSpline() const { return *_spline; }
uint32 GetElapsedTimeForMovement() const { return GetTimeSinceCreated(); } /// @todo: research the right value, in sniffs both timers are nearly identical
- void InitOrbit(AreaTriggerOrbitInfo const& cmi, uint32 timeToTarget);
+ void InitOrbit(AreaTriggerOrbitInfo const& orbit, uint32 timeToTarget);
bool HasOrbit() const;
Optional<AreaTriggerOrbitInfo> const& GetCircularMovementInfo() const { return _orbitInfo; }
@@ -145,6 +146,7 @@ class TC_GAME_API AreaTrigger : public WorldObject, public GridObject<AreaTrigge
AuraEffect const* _aurEff;
+ AreaTriggerShapeInfo _shape;
float _maxSearchRadius;
int32 _duration;
int32 _totalDuration;
@@ -163,7 +165,7 @@ class TC_GAME_API AreaTrigger : public WorldObject, public GridObject<AreaTrigge
Optional<AreaTriggerOrbitInfo> _orbitInfo;
- AreaTriggerMiscTemplate const* _areaTriggerMiscTemplate;
+ AreaTriggerCreateProperties const* _areaTriggerCreateProperties;
AreaTriggerTemplate const* _areaTriggerTemplate;
GuidUnorderedSet _insideUnits;
diff --git a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp
index 4095037dece..4458af15997 100644
--- a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp
+++ b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.cpp
@@ -26,58 +26,43 @@ AreaTriggerScaleInfo::AreaTriggerScaleInfo()
memset(Data.Raw, 0, sizeof(Data.Raw));
}
-AreaTriggerTemplate::AreaTriggerTemplate()
+AreaTriggerShapeInfo::AreaTriggerShapeInfo()
{
- Id = { 0, false };
Type = AREATRIGGER_TYPE_MAX;
- Flags = 0;
- ScriptId = 0;
- MaxSearchRadius = 0.0f;
-
memset(DefaultDatas.Data, 0, sizeof(DefaultDatas.Data));
}
-AreaTriggerTemplate::~AreaTriggerTemplate()
-{
-}
-
-// Init the MaxSearchRadius that will be used in TrinitySearcher, avoiding calculate it at each update
-void AreaTriggerTemplate::InitMaxSearchRadius()
+float AreaTriggerShapeInfo::GetMaxSearchRadius() const
{
switch (Type)
{
case AREATRIGGER_TYPE_SPHERE:
- {
- MaxSearchRadius = std::max(SphereDatas.Radius, SphereDatas.RadiusTarget);
- break;
- }
+ return std::max(SphereDatas.Radius, SphereDatas.RadiusTarget);
case AREATRIGGER_TYPE_BOX:
- {
- MaxSearchRadius = std::sqrt(BoxDatas.Extents[0] * BoxDatas.Extents[0] / 4 + BoxDatas.Extents[1] * BoxDatas.Extents[1] / 4);
- break;
- }
- // Polygon is SpellMisc based, can't init MaxSearchRadius
- case AREATRIGGER_TYPE_POLYGON:
- {
- if (PolygonDatas.Height <= 0.0f)
- PolygonDatas.Height = 1.0f;
-
- break;
- }
+ return std::sqrt(BoxDatas.Extents[0] * BoxDatas.Extents[0] / 4 + BoxDatas.Extents[1] * BoxDatas.Extents[1] / 4);
case AREATRIGGER_TYPE_CYLINDER:
- {
- MaxSearchRadius = CylinderDatas.Radius;
- break;
- }
+ return CylinderDatas.Radius;
default:
break;
}
+
+ return 0.0f;
}
-AreaTriggerMiscTemplate::AreaTriggerMiscTemplate()
+AreaTriggerTemplate::AreaTriggerTemplate()
{
- MiscId = 0;
- AreaTriggerEntry = 0;
+ Id = { 0, false };
+ Flags = 0;
+ ScriptId = 0;
+}
+
+AreaTriggerTemplate::~AreaTriggerTemplate()
+{
+}
+
+AreaTriggerCreateProperties::AreaTriggerCreateProperties()
+{
+ Id = 0;
MoveCurveId = 0;
ScaleCurveId = 0;
@@ -102,27 +87,32 @@ AreaTriggerMiscTemplate::AreaTriggerMiscTemplate()
Template = nullptr;
}
-AreaTriggerMiscTemplate::~AreaTriggerMiscTemplate()
+AreaTriggerCreateProperties::~AreaTriggerCreateProperties()
{
}
-bool AreaTriggerMiscTemplate::HasSplines() const
+bool AreaTriggerCreateProperties::HasSplines() const
{
return SplinePoints.size() >= 2;
}
-float AreaTriggerMiscTemplate::GetPolygonMaxSearchRadius() const
+float AreaTriggerCreateProperties::GetMaxSearchRadius() const
{
- Position center(0.0f, 0.0f);
- float maxSearchRadius = 0.0f;
-
- for (TaggedPosition<Position::XY> const& vertice : PolygonVertices)
+ if (Shape.Type == AREATRIGGER_TYPE_POLYGON)
{
- float pointDist = center.GetExactDist2d(vertice);
+ Position center(0.0f, 0.0f);
+ float maxSearchRadius = 0.0f;
+
+ for (TaggedPosition<Position::XY> const& vertice : PolygonVertices)
+ {
+ float pointDist = center.GetExactDist2d(vertice);
+
+ if (pointDist > maxSearchRadius)
+ maxSearchRadius = pointDist;
+ }
- if (pointDist > maxSearchRadius)
- maxSearchRadius = pointDist;
+ return maxSearchRadius;
}
- return maxSearchRadius;
+ return Shape.GetMaxSearchRadius();
}
diff --git a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h
index 9de9356f273..73abbbcc21b 100644
--- a/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h
+++ b/src/server/game/Entities/AreaTrigger/AreaTriggerTemplate.h
@@ -36,10 +36,10 @@ enum AreaTriggerFlags
AREATRIGGER_FLAG_HAS_FOLLOWS_TERRAIN = 0x00010, // NYI
AREATRIGGER_FLAG_UNK1 = 0x00020,
AREATRIGGER_FLAG_HAS_TARGET_ROLL_PITCH_YAW = 0x00040, // NYI
- AREATRIGGER_FLAG_HAS_ANIM_ID = 0x00080,
+ AREATRIGGER_FLAG_HAS_ANIM_ID = 0x00080, // DEPRECATED
AREATRIGGER_FLAG_UNK3 = 0x00100,
- AREATRIGGER_FLAG_HAS_ANIM_KIT_ID = 0x00200,
- AREATRIGGER_FLAG_HAS_CIRCULAR_MOVEMENT = 0x00400,
+ AREATRIGGER_FLAG_HAS_ANIM_KIT_ID = 0x00200, // DEPRECATED
+ AREATRIGGER_FLAG_HAS_CIRCULAR_MOVEMENT = 0x00400, // DEPRECATED
AREATRIGGER_FLAG_UNK5 = 0x00800,
};
@@ -115,42 +115,17 @@ struct AreaTriggerScaleInfo
} Data;
};
-struct AreaTriggerOrbitInfo
-{
- Optional<ObjectGuid> PathTarget;
- Optional<TaggedPosition<Position::XYZ>> Center;
- bool CounterClockwise = false;
- bool CanLoop = false;
- uint32 TimeToTarget = 0;
- int32 ElapsedTimeForMovement = 0;
- uint32 StartDelay = 0;
- float Radius = 0.0f;
- float BlendFromRadius = 0.0f;
- float InitialAngle = 0.0f;
- float ZOffset = 0.0f;
-};
-
-class AreaTriggerTemplate
+struct AreaTriggerShapeInfo
{
-public:
- AreaTriggerTemplate();
- ~AreaTriggerTemplate();
-
- bool HasFlag(uint32 flag) const { return (Flags & flag) != 0; }
+ AreaTriggerShapeInfo();
bool IsSphere() const { return Type == AREATRIGGER_TYPE_SPHERE; }
bool IsBox() const { return Type == AREATRIGGER_TYPE_BOX; }
bool IsPolygon() const { return Type == AREATRIGGER_TYPE_POLYGON; }
bool IsCylinder() const { return Type == AREATRIGGER_TYPE_CYLINDER; }
+ float GetMaxSearchRadius() const;
- void InitMaxSearchRadius();
-
- AreaTriggerId Id;
AreaTriggerTypes Type;
- uint32 Flags;
- uint32 ScriptId;
- float MaxSearchRadius;
- std::vector<AreaTriggerAction> Actions;
union
{
@@ -193,17 +168,46 @@ public:
};
};
-class AreaTriggerMiscTemplate
+struct AreaTriggerOrbitInfo
+{
+ Optional<ObjectGuid> PathTarget;
+ Optional<TaggedPosition<Position::XYZ>> Center;
+ bool CounterClockwise = false;
+ bool CanLoop = false;
+ uint32 TimeToTarget = 0;
+ int32 ElapsedTimeForMovement = 0;
+ uint32 StartDelay = 0;
+ float Radius = 0.0f;
+ float BlendFromRadius = 0.0f;
+ float InitialAngle = 0.0f;
+ float ZOffset = 0.0f;
+};
+
+class AreaTriggerTemplate
+{
+public:
+ AreaTriggerTemplate();
+ ~AreaTriggerTemplate();
+
+ bool HasFlag(uint32 flag) const { return (Flags & flag) != 0; }
+
+ AreaTriggerId Id;
+ uint32 Flags;
+ uint32 ScriptId;
+ std::vector<AreaTriggerAction> Actions;
+};
+
+class AreaTriggerCreateProperties
{
public:
- AreaTriggerMiscTemplate();
- ~AreaTriggerMiscTemplate();
+ AreaTriggerCreateProperties();
+ ~AreaTriggerCreateProperties();
bool HasSplines() const;
- float GetPolygonMaxSearchRadius() const;
+ float GetMaxSearchRadius() const;
- uint32 MiscId;
- uint32 AreaTriggerEntry;
+ uint32 Id;
+ AreaTriggerTemplate const* Template;
uint32 MoveCurveId;
uint32 ScaleCurveId;
@@ -220,13 +224,13 @@ public:
AreaTriggerScaleInfo OverrideScale;
AreaTriggerScaleInfo ExtraScale;
- AreaTriggerOrbitInfo OrbitInfo;
-
- AreaTriggerTemplate const* Template;
+ AreaTriggerShapeInfo Shape;
std::vector<TaggedPosition<Position::XY>> PolygonVertices;
std::vector<TaggedPosition<Position::XY>> PolygonVerticesTarget;
+
std::vector<Position> SplinePoints;
+ Optional<AreaTriggerOrbitInfo> OrbitInfo;
};
struct AreaTriggerSpawn
@@ -237,6 +241,8 @@ struct AreaTriggerSpawn
uint32 PhaseId = 0;
uint32 PhaseGroup = 0;
uint8 PhaseUseFlags = 0;
+
+ AreaTriggerShapeInfo Shape;
};
#endif
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 5ed83090c45..02728e4a7a3 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -429,7 +429,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const
if (flags.Vehicle)
{
Unit const* unit = ToUnit();
- *data << uint32(unit->GetVehicleKit()->GetVehicleInfo()->ID); // RecID
+ *data << uint32(unit->GetVehicleKit()->GetVehicleInfo()->ID); // RecID
*data << float(unit->GetOrientation()); // InitialRawFacing
}
@@ -456,32 +456,33 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const
if (flags.AreaTrigger)
{
AreaTrigger const* areaTrigger = ToAreaTrigger();
- AreaTriggerMiscTemplate const* areaTriggerMiscTemplate = areaTrigger->GetMiscTemplate();
+ AreaTriggerCreateProperties const* createProperties = areaTrigger->GetCreateProperties();
AreaTriggerTemplate const* areaTriggerTemplate = areaTrigger->GetTemplate();
+ AreaTriggerShapeInfo const& shape = areaTrigger->GetShape();
*data << uint32(areaTrigger->GetTimeSinceCreated());
*data << areaTrigger->GetRollPitchYaw().PositionXYZStream();
- bool hasAbsoluteOrientation = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_HAS_ABSOLUTE_ORIENTATION);
- bool hasDynamicShape = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_HAS_DYNAMIC_SHAPE);
- bool hasAttached = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_HAS_ATTACHED);
- bool hasFaceMovementDir = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_HAS_FACE_MOVEMENT_DIR);
- bool hasFollowsTerrain = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_HAS_FOLLOWS_TERRAIN);
- bool hasUnk1 = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_UNK1);
- bool hasTargetRollPitchYaw = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_HAS_TARGET_ROLL_PITCH_YAW);
- bool hasScaleCurveID = areaTriggerMiscTemplate->ScaleCurveId != 0;
- bool hasMorphCurveID = areaTriggerMiscTemplate->MorphCurveId != 0;
- bool hasFacingCurveID = areaTriggerMiscTemplate->FacingCurveId != 0;
- bool hasMoveCurveID = areaTriggerMiscTemplate->MoveCurveId != 0;
- bool hasAnimation = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_HAS_ANIM_ID);
- bool hasUnk3 = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_UNK3);
- bool hasAnimKitID = areaTriggerTemplate->HasFlag(AREATRIGGER_FLAG_HAS_ANIM_KIT_ID);
+ bool hasAbsoluteOrientation = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ABSOLUTE_ORIENTATION);
+ bool hasDynamicShape = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_DYNAMIC_SHAPE);
+ bool hasAttached = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_ATTACHED);
+ bool hasFaceMovementDir = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_FACE_MOVEMENT_DIR);
+ bool hasFollowsTerrain = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_FOLLOWS_TERRAIN);
+ bool hasUnk1 = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_UNK1);
+ bool hasTargetRollPitchYaw = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_HAS_TARGET_ROLL_PITCH_YAW);
+ bool hasScaleCurveID = createProperties && createProperties->ScaleCurveId != 0;
+ bool hasMorphCurveID = createProperties && createProperties->MorphCurveId != 0;
+ bool hasFacingCurveID = createProperties && createProperties->FacingCurveId != 0;
+ bool hasMoveCurveID = createProperties && createProperties->MoveCurveId != 0;
+ bool hasAnimation = createProperties && createProperties->AnimId;
+ bool hasUnk3 = areaTriggerTemplate && areaTrigger->GetTemplate()->HasFlag(AREATRIGGER_FLAG_UNK3);
+ bool hasAnimKitID = createProperties && createProperties->AnimKitId;
bool hasAnimProgress = false;
- bool hasAreaTriggerSphere = areaTriggerTemplate->IsSphere();
- bool hasAreaTriggerBox = areaTriggerTemplate->IsBox();
- bool hasAreaTriggerPolygon = areaTriggerTemplate->IsPolygon();
- bool hasAreaTriggerCylinder = areaTriggerTemplate->IsCylinder();
+ bool hasAreaTriggerSphere = shape.IsSphere();
+ bool hasAreaTriggerBox = shape.IsBox();
+ bool hasAreaTriggerPolygon = createProperties && shape.IsPolygon();
+ bool hasAreaTriggerCylinder = shape.IsCylinder();
bool hasAreaTriggerSpline = areaTrigger->HasSplines();
bool hasOrbit = areaTrigger->HasOrbit();
bool hasMovementScript = false;
@@ -526,64 +527,64 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const
*data << areaTrigger->GetTargetRollPitchYaw().PositionXYZStream();
if (hasScaleCurveID)
- *data << uint32(areaTriggerMiscTemplate->ScaleCurveId);
+ *data << uint32(createProperties->ScaleCurveId);
if (hasMorphCurveID)
- *data << uint32(areaTriggerMiscTemplate->MorphCurveId);
+ *data << uint32(createProperties->MorphCurveId);
if (hasFacingCurveID)
- *data << uint32(areaTriggerMiscTemplate->FacingCurveId);
+ *data << uint32(createProperties->FacingCurveId);
if (hasMoveCurveID)
- *data << uint32(areaTriggerMiscTemplate->MoveCurveId);
+ *data << uint32(createProperties->MoveCurveId);
if (hasAnimation)
- *data << int32(areaTriggerMiscTemplate->AnimId);
+ *data << int32(createProperties->AnimId);
if (hasAnimKitID)
- *data << int32(areaTriggerMiscTemplate->AnimKitId);
+ *data << int32(createProperties->AnimKitId);
if (hasAnimProgress)
*data << uint32(0);
if (hasAreaTriggerSphere)
{
- *data << float(areaTriggerTemplate->SphereDatas.Radius);
- *data << float(areaTriggerTemplate->SphereDatas.RadiusTarget);
+ *data << float(shape.SphereDatas.Radius);
+ *data << float(shape.SphereDatas.RadiusTarget);
}
if (hasAreaTriggerBox)
{
- *data << float(areaTriggerTemplate->BoxDatas.Extents[0]);
- *data << float(areaTriggerTemplate->BoxDatas.Extents[1]);
- *data << float(areaTriggerTemplate->BoxDatas.Extents[2]);
- *data << float(areaTriggerTemplate->BoxDatas.ExtentsTarget[0]);
- *data << float(areaTriggerTemplate->BoxDatas.ExtentsTarget[1]);
- *data << float(areaTriggerTemplate->BoxDatas.ExtentsTarget[2]);
+ *data << float(shape.BoxDatas.Extents[0]);
+ *data << float(shape.BoxDatas.Extents[1]);
+ *data << float(shape.BoxDatas.Extents[2]);
+ *data << float(shape.BoxDatas.ExtentsTarget[0]);
+ *data << float(shape.BoxDatas.ExtentsTarget[1]);
+ *data << float(shape.BoxDatas.ExtentsTarget[2]);
}
if (hasAreaTriggerPolygon)
{
- *data << int32(areaTriggerMiscTemplate->PolygonVertices.size());
- *data << int32(areaTriggerMiscTemplate->PolygonVerticesTarget.size());
- *data << float(areaTriggerTemplate->PolygonDatas.Height);
- *data << float(areaTriggerTemplate->PolygonDatas.HeightTarget);
+ *data << int32(createProperties->PolygonVertices.size());
+ *data << int32(createProperties->PolygonVerticesTarget.size());
+ *data << float(shape.PolygonDatas.Height);
+ *data << float(shape.PolygonDatas.HeightTarget);
- for (TaggedPosition<Position::XY> const& vertice : areaTriggerMiscTemplate->PolygonVertices)
+ for (TaggedPosition<Position::XY> const& vertice : createProperties->PolygonVertices)
*data << vertice;
- for (TaggedPosition<Position::XY> const& vertice : areaTriggerMiscTemplate->PolygonVerticesTarget)
+ for (TaggedPosition<Position::XY> const& vertice : createProperties->PolygonVerticesTarget)
*data << vertice;
}
if (hasAreaTriggerCylinder)
{
- *data << float(areaTriggerTemplate->CylinderDatas.Radius);
- *data << float(areaTriggerTemplate->CylinderDatas.RadiusTarget);
- *data << float(areaTriggerTemplate->CylinderDatas.Height);
- *data << float(areaTriggerTemplate->CylinderDatas.HeightTarget);
- *data << float(areaTriggerTemplate->CylinderDatas.LocationZOffset);
- *data << float(areaTriggerTemplate->CylinderDatas.LocationZOffsetTarget);
+ *data << float(shape.CylinderDatas.Radius);
+ *data << float(shape.CylinderDatas.RadiusTarget);
+ *data << float(shape.CylinderDatas.Height);
+ *data << float(shape.CylinderDatas.HeightTarget);
+ *data << float(shape.CylinderDatas.LocationZOffset);
+ *data << float(shape.CylinderDatas.LocationZOffsetTarget);
}
//if (hasMovementScript)