From 9145a23ffec44fe26a7d1a9b036c454157737be5 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Tue, 10 Mar 2026 19:45:20 -0700 Subject: [PATCH] Fix: stop previous click animation before starting a new one Rapid customize clicks would orphan running click animations because SetClickAnimObjectId overwrote the tracked ID without stopping the old animation first. When movement later called StopClickAnimation, only the last animation was stopped, leaving earlier ones driving the ROI transform and causing the player model to stay behind while the camera moved forward. Co-Authored-By: Claude Opus 4.6 --- extensions/src/multiplayer/networkmanager.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extensions/src/multiplayer/networkmanager.cpp b/extensions/src/multiplayer/networkmanager.cpp index 44850120..e54c657e 100644 --- a/extensions/src/multiplayer/networkmanager.cpp +++ b/extensions/src/multiplayer/networkmanager.cpp @@ -700,6 +700,7 @@ void NetworkManager::HandleCustomize(const CustomizeMsg& p_msg) p_msg.changeType == CHANGE_MOOD ); if (!it->second->IsMoving() && !it->second->IsInMultiPartEmote()) { + it->second->StopClickAnimation(); MxU32 clickAnimId = CharacterCustomizer::PlayClickAnimation(it->second->GetROI(), it->second->GetCustomizeState()); it->second->SetClickAnimObjectId(clickAnimId); @@ -734,6 +735,7 @@ void NetworkManager::HandleCustomize(const CustomizeMsg& p_msg) // Only play click animation in 3rd person (not visible in 1st person or multi-part emote) if (m_thirdPersonCamera.GetDisplayROI() && !m_thirdPersonCamera.IsInVehicle() && !m_thirdPersonCamera.IsInMultiPartEmote()) { + m_thirdPersonCamera.StopClickAnimation(); MxU32 clickAnimId = CharacterCustomizer::PlayClickAnimation( m_thirdPersonCamera.GetDisplayROI(), m_thirdPersonCamera.GetCustomizeState()