From 3d57d83a5b66a1c6d76add5411e2bb4f085ca761 Mon Sep 17 00:00:00 2001 From: NotEvil Date: Fri, 17 Apr 2026 02:52:29 +0200 Subject: [PATCH] =?UTF-8?q?fix(animation):=20preserve=20head=20tracking=20?= =?UTF-8?q?in=20Full=20animations=20=E2=80=94=20head=20never=20enabled=20a?= =?UTF-8?q?s=20free=20bone?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tiedup/remake/client/gltf/GltfPoseConverter.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/tiedup/remake/client/gltf/GltfPoseConverter.java b/src/main/java/com/tiedup/remake/client/gltf/GltfPoseConverter.java index d19b831..3946f1d 100644 --- a/src/main/java/com/tiedup/remake/client/gltf/GltfPoseConverter.java +++ b/src/main/java/com/tiedup/remake/client/gltf/GltfPoseConverter.java @@ -605,11 +605,15 @@ public final class GltfPoseConverter { } else if ( isFullBodyAnimation && enabledParts.contains(partName) && - partsWithKeyframes.contains(partName) + partsWithKeyframes.contains(partName) && + !"head".equals(partName) ) { // Full-body animation: free part WITH keyframes — enable. // The "Full" prefix is the artist's explicit opt-in to animate // bones outside their declared regions. + // EXCEPTION: head is never enabled as a free bone — vanilla head + // tracking (mouse look) is always preserved unless the item + // explicitly owns a head region (HEAD, EYES, EARS, MOUTH). part.fullyEnablePart(false); } else { // Non-Full animation, other item's part, or free part without keyframes.