From ccef87f423a8088d887d1d2035befa8861dab2d3 Mon Sep 17 00:00:00 2001 From: kseny Date: Sun, 22 Oct 2023 11:57:52 +0300 Subject: [PATCH 1/2] fix move object rotation when optional args are not set --- Server/Components/Objects/object.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Server/Components/Objects/object.hpp b/Server/Components/Objects/object.hpp index a40f324f9..b84a8be91 100644 --- a/Server/Components/Objects/object.hpp +++ b/Server/Components/Objects/object.hpp @@ -213,9 +213,11 @@ class BaseObject : public ObjectType, public PoolIDProvider, public NoCopy moving_ = true; moveData_ = data; - /// targetRot being NAN will result in rotSpeed being NAN resulting in no rotation if (moveData_.targetRot.x == -1000.0f && moveData_.targetRot.y == -1000.0f && moveData_.targetRot.z == -1000.0f) { + /// Send client current object rotation. + moveData_.targetRot = this->rot_; + /// targetRot being NAN will result in rotSpeed being NAN resulting in no server side rotation rotSpeed_ = NAN; } else From 924d55316df818e4cd8e6b9e8be2b63a478beb06 Mon Sep 17 00:00:00 2001 From: iAmir Date: Thu, 26 Oct 2023 02:08:30 +0330 Subject: [PATCH 2/2] only change rot coord if it's below -1k, not all 3 at once --- Server/Components/Objects/object.hpp | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/Server/Components/Objects/object.hpp b/Server/Components/Objects/object.hpp index b84a8be91..862db8255 100644 --- a/Server/Components/Objects/object.hpp +++ b/Server/Components/Objects/object.hpp @@ -213,16 +213,30 @@ class BaseObject : public ObjectType, public PoolIDProvider, public NoCopy moving_ = true; moveData_ = data; - if (moveData_.targetRot.x == -1000.0f && moveData_.targetRot.y == -1000.0f && moveData_.targetRot.z == -1000.0f) + // Send client current object rotation when passed rotation is smaller than or equal to -1000 + if (moveData_.targetRot.x <= -1000.0f) + { + moveData_.targetRot.x = rot_.x; + } + + if (moveData_.targetRot.y <= -1000.0f) + { + moveData_.targetRot.y = rot_.y; + } + + if (moveData_.targetRot.z <= -1000.0f) + { + moveData_.targetRot.z = rot_.z; + } + + float rotDistance = glm::distance(rot_, moveData_.targetRot); + if (rotDistance == 0.0f) { - /// Send client current object rotation. - moveData_.targetRot = this->rot_; - /// targetRot being NAN will result in rotSpeed being NAN resulting in no server side rotation rotSpeed_ = NAN; } else { - rotSpeed_ = glm::distance(rot_, moveData_.targetRot) * moveData_.speed / glm::distance(pos_, moveData_.targetPos); + rotSpeed_ = rotDistance * moveData_.speed / glm::distance(pos_, moveData_.targetPos); } return makeMovePacket();