From df6de8c4ee68cf9ff5fa261d806543d4f3774785 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 26 Dec 2025 22:05:11 +0100 Subject: Core/GameObjects: Refactor GetPauseTimes to return std::span --- src/server/game/Entities/GameObject/GameObject.cpp | 11 ++++++----- src/server/game/Entities/GameObject/GameObject.h | 2 +- src/server/game/Entities/Object/Object.cpp | 12 ++++++------ 3 files changed, 13 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 764ed318ae2..a5742dc17eb 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -430,9 +430,9 @@ public: return 1; } - std::vector const* GetPauseTimes() const + std::span GetPauseTimes() const { - return &_stopFrames; + return _stopFrames; } ObjectGuid GetTransportGUID() const override { return _owner.GetGUID(); } @@ -4136,12 +4136,13 @@ void GameObject::ClearUpdateMask(bool remove) Object::ClearUpdateMask(remove); } -std::vector const* GameObject::GetPauseTimes() const +std::span GameObject::GetPauseTimes() const { + std::span result; if (GameObjectType::Transport const* transport = dynamic_cast(m_goTypeImpl.get())) - return transport->GetPauseTimes(); + result = transport->GetPauseTimes(); - return nullptr; + return result; } void GameObject::SetPathProgressForClient(float progress) diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 800ef83a09e..5b1ed3b0b0b 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -290,7 +290,7 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject void SetGoAnimProgress(uint8 animprogress) { SetUpdateFieldValue(m_values.ModifyValue(&GameObject::m_gameObjectData).ModifyValue(&UF::GameObjectData::PercentHealth), animprogress); } static void SetGoArtKit(uint32 artkit, GameObject* go, ObjectGuid::LowType lowguid = UI64LIT(0)); - std::vector const* GetPauseTimes() const; + std::span GetPauseTimes() const; Optional GetPathProgressForClient() const { return m_transportPathProgress; } void SetPathProgressForClient(float progress); diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 58925b7e40a..3f5e923cbfc 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -284,9 +284,9 @@ void Object::SendOutOfRangeForPlayer(Player* target) const void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Player const* target) const { - std::vector const* PauseTimes = nullptr; - if (GameObject const* go = ToGameObject()) - PauseTimes = go->GetPauseTimes(); + std::span PauseTimes; + if (IsGameObject()) + PauseTimes = static_cast(this)->GetPauseTimes(); data->WriteBit(IsWorldObject()); // HasPositionFragment data->WriteBit(flags.NoBirthAnim); @@ -445,7 +445,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe WorldPackets::Movement::CommonMovement::WriteCreateObjectSplineDataBlock(*unit->movespline, *data); } - *data << uint32(PauseTimes ? PauseTimes->size() : 0); + *data << uint32(PauseTimes.size()); if (flags.Stationary) { @@ -498,8 +498,8 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe // *data << uint8(AttachmentFlags); //} - if (PauseTimes && !PauseTimes->empty()) - data->append(PauseTimes->data(), PauseTimes->size()); + if (!PauseTimes.empty()) + data->append(PauseTimes.data(), PauseTimes.size()); if (flags.MovementTransport) { -- cgit v1.2.3