]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
Revert "Fix short 180 degree rotation when using set_bone_position (#10405)" (#10534)
authorLars Müller <34514239+appgurueu@users.noreply.github.com>
Wed, 4 Nov 2020 20:43:32 +0000 (21:43 +0100)
committerGitHub <noreply@github.com>
Wed, 4 Nov 2020 20:43:32 +0000 (21:43 +0100)
This reverts commit 0f98b54aa4b2361575002d92b29fe222703ba557.

src/client/content_cao.cpp

index 29a3acf250ef25b8f6a3909d06f8d430f144fd87..e7f9db845c80bb77b2c092312a896dcc09693ae1 100644 (file)
@@ -1487,17 +1487,24 @@ void GenericCAO::updateBonePosition()
                if (!bone)
                        continue;
 
+               //If bone is manually positioned there is no need to perform the bug check
+               bool skip = false;
+               for (auto &it : m_bone_position) {
+                       if (it.first == bone->getName()) {
+                               skip = true;
+                               break;
+                       }
+               }
+               if (skip)
+                       continue;
+
                // Workaround for Irrlicht bug
                // We check each bone to see if it has been rotated ~180deg from its expected position due to a bug in Irricht
                // when using EJUOR_CONTROL joint control. If the bug is detected we update the bone to the proper position
                // and update the bones transformation.
                v3f bone_rot = bone->getRelativeTransformation().getRotationDegrees();
-               float offset_X = fabsf(bone_rot.X - bone->getRotation().X);
-               float offset_Y = fabsf(bone_rot.Y - bone->getRotation().Y);
-               float offset_Z = fabsf(bone_rot.Z - bone->getRotation().Z);
-               if ((offset_X > 179.9f && offset_X < 180.1f)
-                               || (offset_Y > 179.9f && offset_Y < 180.1f)
-                               || (offset_Z > 179.9f && offset_Z < 180.1f)) {
+               float offset = fabsf(bone_rot.X - bone->getRotation().X);
+               if (offset > 179.9f && offset < 180.1f) {
                        bone->setRotation(bone_rot);
                        bone->updateAbsolutePosition();
                }