diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/AreaTrigger/AreaTrigger.cpp | 13 | ||||
-rw-r--r-- | src/server/game/Entities/AreaTrigger/AreaTrigger.h | 2 |
2 files changed, 5 insertions, 10 deletions
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index 7178a58ae7f..10ceed362e3 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -1075,10 +1075,10 @@ void AreaTrigger::InitSplineOffsets(std::vector<Position> const& offsets, uint32 rotatedPoints.emplace_back(x, y, z); } - InitSplines(std::move(rotatedPoints), timeToTarget); + InitSplines(rotatedPoints, timeToTarget); } -void AreaTrigger::InitSplines(std::vector<G3D::Vector3> splinePoints, uint32 timeToTarget) +void AreaTrigger::InitSplines(std::vector<G3D::Vector3> const& splinePoints, uint32 timeToTarget) { if (splinePoints.size() < 2) return; @@ -1086,15 +1086,10 @@ void AreaTrigger::InitSplines(std::vector<G3D::Vector3> splinePoints, uint32 tim _movementTime = 0; _spline = std::make_unique<::Movement::Spline<int32>>(); - _spline->init_spline(&splinePoints[0], splinePoints.size(), ::Movement::SplineBase::ModeLinear); + _spline->init_spline(splinePoints.data(), splinePoints.size(), ::Movement::SplineBase::ModeLinear); _spline->initLengths(); - // should be sent in object create packets only - DoWithSuppressingObjectUpdates([&]() - { - SetUpdateFieldValue(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::TimeToTarget), timeToTarget); - const_cast<UF::AreaTriggerData&>(*m_areaTriggerData).ClearChanged(&UF::AreaTriggerData::TimeToTarget); - }); + SetUpdateFieldValue(m_values.ModifyValue(&AreaTrigger::m_areaTriggerData).ModifyValue(&UF::AreaTriggerData::TimeToTarget), timeToTarget); if (IsInWorld()) { diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.h b/src/server/game/Entities/AreaTrigger/AreaTrigger.h index db134bb3549..e52cfb58356 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.h +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.h @@ -151,7 +151,7 @@ class TC_GAME_API AreaTrigger final : public WorldObject, public GridObject<Area Position const& GetRollPitchYaw() const { return _rollPitchYaw; } Position const& GetTargetRollPitchYaw() const { return _targetRollPitchYaw; } void InitSplineOffsets(std::vector<Position> const& offsets, uint32 timeToTarget); - void InitSplines(std::vector<G3D::Vector3> splinePoints, uint32 timeToTarget); + void InitSplines(std::vector<G3D::Vector3> const& splinePoints, uint32 timeToTarget); bool HasSplines() const; ::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 |