diff --git a/indra/newview/llhudeffectlookat.cpp b/indra/newview/llhudeffectlookat.cpp index cf8f890a3b..25d841191f 100644 --- a/indra/newview/llhudeffectlookat.cpp +++ b/indra/newview/llhudeffectlookat.cpp @@ -510,14 +510,23 @@ BOOL LLHUDEffectLookAt::setLookAt(ELookAtType target_type, LLViewerObject *objec // } //} + + // FIRE-24175: Fix look at target clamping + bool isLookingAtSelf = false; + if(object){ + isLookingAtSelf = object->isAvatar() && ((LLVOAvatar*)(LLViewerObject*)object)->isSelf(); + } static LLCachedControl s_EnableLimiter(gSavedSettings, "FSLookAtTargetLimitDistance"); bool lookAtShouldClamp = s_EnableLimiter && - (*mAttentions)[mTargetType].mName != "None" && - (*mAttentions)[mTargetType].mName != "Idle" && + //(*mAttentions)[mTargetType].mName != "None" && + //(*mAttentions)[mTargetType].mName != "Idle" && (*mAttentions)[mTargetType].mName != "Respond" && (*mAttentions)[mTargetType].mName != "Conversation" && - (*mAttentions)[mTargetType].mName != "FreeLook" && - (*mAttentions)[mTargetType].mName != "AutoListen"; + //(*mAttentions)[mTargetType].mName != "FreeLook" && + //(*mAttentions)[mTargetType].mName != "AutoListen"; + (*mAttentions)[mTargetType].mName != "AutoListen" && + !isLookingAtSelf; + // FIRE-24175 if (!lookAtShouldClamp) //We do a similar but seperate calculation if we are doing limited distances { @@ -549,18 +558,20 @@ BOOL LLHUDEffectLookAt::setLookAt(ELookAtType target_type, LLViewerObject *objec { if (lookAtShouldClamp) { - if (mTargetObject->isAvatar() && ((LLVOAvatar*)(LLViewerObject*)mTargetObject)->isSelf()) - { - //We use this branch and mimic our mouse/first person look pose. - mTargetOffsetGlobal.setVec(gAgent.getPosGlobalFromAgent(gAgentAvatarp->mHeadp->getWorldPosition() + position)); - mTargetObject = NULL; - } - else - { + // FIRE-24175: Fix look at target clamping + //if (mTargetObject->isAvatar() && ((LLVOAvatar*)(LLViewerObject*)mTargetObject)->isSelf()) + //{ + // //We use this branch and mimic our mouse/first person look pose. + // mTargetOffsetGlobal.setVec(gAgent.getPosGlobalFromAgent(gAgentAvatarp->mHeadp->getWorldPosition() + position)); + // mTargetObject = NULL; + //} + //else + //{ //Otherwise, mimic looking at the object. mTargetOffsetGlobal.setVec(object->getPositionGlobal() + (LLVector3d)(position * object->getRotationRegion())); mTargetObject = NULL; - } + //} + // FIRE-24175 } else {