From a0157baf08ab5a4ac3f667520e18a796a11b9ad7 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Tue, 21 Sep 2021 17:01:57 +0100 Subject: SL-15999 - try to force non-interactive agents to always start out standing --- indra/newview/llappviewer.cpp | 1 + indra/newview/llviewermessage.cpp | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) (limited to 'indra') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index eab91f5d02..b6446e40ac 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2440,6 +2440,7 @@ namespace } // anonymous namespace // Set a named control temporarily for this session, as when set via the command line --set option. +// Name can be specified as ".", with default group being Global. bool tempSetControl(const std::string& name, const std::string& value) { std::string name_part; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 39c891c9c1..c99232eba0 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -4049,6 +4049,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) S32 num_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationList); S32 num_source_blocks = mesgsys->getNumberOfBlocksFast(_PREHASH_AnimationSourceList); + bool non_interactive_got_run = false; LL_DEBUGS("Messaging", "Motion") << "Processing " << num_blocks << " Animations" << LL_ENDL; @@ -4064,6 +4065,14 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i); mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i); + if (gNonInteractive && (animation_id == ANIM_AGENT_RUN)) + { + // RUN requests get sent at startup for unclear + // reasons. Same avatar may get requests one run and + // not another. At least in the non-interactive case, + // we want to override these. + non_interactive_got_run = true; + } avatarp->mSignaledAnimations[animation_id] = anim_sequence_id; // *HACK: Disabling flying mode if it has been enabled shortly before the agent @@ -4127,6 +4136,13 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) { avatarp->processAnimationStateChanges(); } + + if (non_interactive_got_run) + { + // Total kluge alert. + LL_INFOS("Messaging","Motion") << "non-interactive mode, resetting animations" << LL_ENDL; + gAgent.stopCurrentAnimations(); + } } -- cgit v1.2.3