diff --git a/extensions/include/extensions/thirdpersoncamera/controller.h b/extensions/include/extensions/thirdpersoncamera/controller.h index 875cd418..dd4b8989 100644 --- a/extensions/include/extensions/thirdpersoncamera/controller.h +++ b/extensions/include/extensions/thirdpersoncamera/controller.h @@ -75,6 +75,7 @@ class Controller { m_animStopCallback = p_animPlaying ? std::move(p_animStopCallback) : nullptr; } bool IsAnimPlaying() const { return m_animPlaying; } + bool IsAnimLockDisplay() const { return m_animLockDisplay; } void OnWorldEnabled(LegoWorld* p_world); void OnWorldDisabled(LegoWorld* p_world); diff --git a/extensions/src/multiplayer/networkmanager.cpp b/extensions/src/multiplayer/networkmanager.cpp index 1e894bdc..d0056be7 100644 --- a/extensions/src/multiplayer/networkmanager.cpp +++ b/extensions/src/multiplayer/networkmanager.cpp @@ -1889,9 +1889,8 @@ std::string NetworkManager::BuildCompletionJson(uint16_t p_animIndex, uint64_t p } std::vector slotChars = Animation::SessionHost::ComputeSlotCharIndices(entry); - uint8_t count = view->slotCount < static_cast(slotChars.size()) - ? view->slotCount - : static_cast(slotChars.size()); + uint8_t count = view->slotCount < static_cast(slotChars.size()) ? view->slotCount + : static_cast(slotChars.size()); char eventIdHex[17]; SDL_snprintf( @@ -2198,8 +2197,10 @@ void NetworkManager::HandleCustomize(const CustomizeMsg& p_msg) p_msg.changeType == CHANGE_MOOD ); - // Only play click animation in 3rd person (not during multi-part emote or animation playback) - if (cam->GetDisplayROI() && !cam->IsInVehicle() && !cam->IsExtraAnimBlocking() && !cam->IsAnimPlaying()) { + // Only play click animation in 3rd person (not during multi-part emote or animation performance; spectators + // allowed) + if (cam->GetDisplayROI() && !cam->IsInVehicle() && !cam->IsExtraAnimBlocking() && + !(cam->IsAnimPlaying() && cam->IsAnimLockDisplay())) { cam->StopClickAnimation(); MxU32 clickAnimId = Common::CharacterCustomizer::PlayClickAnimation(cam->GetDisplayROI(), cam->GetCustomizeState());