From f7bc41eebec9c214df71adef292f1387a61e76c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Borz=C3=AC?= Date: Sat, 21 Feb 2026 17:42:52 +0100 Subject: [PATCH] refactor(Core/Entities): clean up vendor item removal and add QuaternionData Euler helpers (#24790) --- src/server/game/Entities/Creature/Creature.cpp | 2 +- src/server/game/Entities/GameObject/GameObject.cpp | 11 +++++++++++ src/server/game/Entities/GameObject/GameObjectData.h | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index dd2ab4992..694c19287 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -88,7 +88,7 @@ bool VendorItemData::RemoveItem(uint32 item_id) { if ((*i)->item == item_id) { - i = m_items.erase(i++); + i = m_items.erase(i); found = true; } else diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 7979eeb21..32e450030 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -43,6 +43,17 @@ bool QuaternionData::IsUnit() const return fabs(x * x + y * y + z * z + w * w - 1.0f) < 1e-5f; } +void QuaternionData::ToEulerAnglesZYX(float& Z, float& Y, float& X) const +{ + G3D::Matrix3(G3D::Quat(x, y, z, w)).toEulerAnglesZYX(Z, Y, X); +} + +QuaternionData QuaternionData::FromEulerAnglesZYX(float Z, float Y, float X) +{ + G3D::Quat quat(G3D::Matrix3::fromEulerAnglesZYX(Z, Y, X)); + return QuaternionData(quat.x, quat.y, quat.z, quat.w); +} + GameObject::GameObject() : WorldObject(), MovableMapObject(), m_model(nullptr), m_goValue(), m_AI(nullptr) { diff --git a/src/server/game/Entities/GameObject/GameObjectData.h b/src/server/game/Entities/GameObject/GameObjectData.h index eafe70a9d..39c1a6e28 100644 --- a/src/server/game/Entities/GameObject/GameObjectData.h +++ b/src/server/game/Entities/GameObject/GameObjectData.h @@ -689,6 +689,8 @@ struct AC_GAME_API QuaternionData QuaternionData(float X, float Y, float Z, float W) : x(X), y(Y), z(Z), w(W) { } [[nodiscard]] bool IsUnit() const; + void ToEulerAnglesZYX(float& Z, float& Y, float& X) const; + [[nodiscard]] static QuaternionData FromEulerAnglesZYX(float Z, float Y, float X); }; // `gameobject_addon` table