Commits

Seth ProductEngine committed 5cbafa0

Fixed low bug (EXT-2781) Stop Flying button is displayed while walking after slumping.
- Disabled flying mode if it has been enabled shortly before the agent
stand up animation is signaled. In this case we don't get a signal to start flying animation because of some server side problem, the agent's avatar does not play flying animation, so we switch flying mode off. This may cause "Stop Flying" button to blink.

Comments (0)

Files changed (2)

indra/newview/llagent.cpp

 {
 	if (mAvatarObject.notNull())
 	{
-		if(mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_STANDUP) != mAvatarObject->mSignaledAnimations.end())
+		// *HACK: Don't allow to start the flying mode if we got ANIM_AGENT_STANDUP signal
+		// because in this case we won't get a signal to start avatar flying animation and
+		// it will be walking with flying mode "ON" indication. However we allow to switch
+		// the flying mode off if we get ANIM_AGENT_STANDUP signal. See process_avatar_animation().
+		if(fly && mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_STANDUP) != mAvatarObject->mSignaledAnimations.end())
 		{
 			return;
 		}

indra/newview/llviewermessage.cpp

 #include "llviewerprecompiledheaders.h"
 #include "llviewermessage.h"
 
+#include "llanimationstates.h"
 #include "llaudioengine.h" 
 #include "lscript_byteformat.h"
 #include "lleconomy.h"
 
 			avatarp->mSignaledAnimations[animation_id] = anim_sequence_id;
 
+			// *HACK: Disabling flying mode if it has been enabled shortly before the agent
+			// stand up animation is signaled. In this case we don't get a signal to start
+			// flying animation from server, the AGENT_CONTROL_FLY flag remains set but the
+			// avatar does not play flying animation, so we switch flying mode off.
+			// See LLAgent::setFlying(). This may cause "Stop Flying" button to blink.
+			if (animation_id == ANIM_AGENT_STANDUP && gAgent.getFlying())
+			{
+				gAgent.setFlying(FALSE);
+			}
+
 			if (i < num_source_blocks)
 			{
 				mesgsys->getUUIDFast(_PREHASH_AnimationSourceList, _PREHASH_ObjectID, object_id, i);