Allow spectator to play click animation during scene playback

This commit is contained in:
Christian Semmler 2026-04-03 21:10:44 -07:00
parent ac4cd6b979
commit f7e2dd41ef
No known key found for this signature in database
GPG Key ID: 086DAA1360BEEE5C
2 changed files with 7 additions and 5 deletions

View File

@ -75,6 +75,7 @@ class Controller {
m_animStopCallback = p_animPlaying ? std::move(p_animStopCallback) : nullptr; m_animStopCallback = p_animPlaying ? std::move(p_animStopCallback) : nullptr;
} }
bool IsAnimPlaying() const { return m_animPlaying; } bool IsAnimPlaying() const { return m_animPlaying; }
bool IsAnimLockDisplay() const { return m_animLockDisplay; }
void OnWorldEnabled(LegoWorld* p_world); void OnWorldEnabled(LegoWorld* p_world);
void OnWorldDisabled(LegoWorld* p_world); void OnWorldDisabled(LegoWorld* p_world);

View File

@ -1889,8 +1889,7 @@ std::string NetworkManager::BuildCompletionJson(uint16_t p_animIndex, uint64_t p
} }
std::vector<int8_t> slotChars = Animation::SessionHost::ComputeSlotCharIndices(entry); std::vector<int8_t> slotChars = Animation::SessionHost::ComputeSlotCharIndices(entry);
uint8_t count = view->slotCount < static_cast<uint8_t>(slotChars.size()) uint8_t count = view->slotCount < static_cast<uint8_t>(slotChars.size()) ? view->slotCount
? view->slotCount
: static_cast<uint8_t>(slotChars.size()); : static_cast<uint8_t>(slotChars.size());
char eventIdHex[17]; char eventIdHex[17];
@ -2198,8 +2197,10 @@ void NetworkManager::HandleCustomize(const CustomizeMsg& p_msg)
p_msg.changeType == CHANGE_MOOD p_msg.changeType == CHANGE_MOOD
); );
// Only play click animation in 3rd person (not during multi-part emote or animation playback) // Only play click animation in 3rd person (not during multi-part emote or animation performance; spectators
if (cam->GetDisplayROI() && !cam->IsInVehicle() && !cam->IsExtraAnimBlocking() && !cam->IsAnimPlaying()) { // allowed)
if (cam->GetDisplayROI() && !cam->IsInVehicle() && !cam->IsExtraAnimBlocking() &&
!(cam->IsAnimPlaying() && cam->IsAnimLockDisplay())) {
cam->StopClickAnimation(); cam->StopClickAnimation();
MxU32 clickAnimId = MxU32 clickAnimId =
Common::CharacterCustomizer::PlayClickAnimation(cam->GetDisplayROI(), cam->GetCustomizeState()); Common::CharacterCustomizer::PlayClickAnimation(cam->GetDisplayROI(), cam->GetCustomizeState());