diff options
| author | andreykproductengine <andreykproductengine@lindenlab.com> | 2019-08-01 19:33:20 +0300 | 
|---|---|---|
| committer | andreykproductengine <andreykproductengine@lindenlab.com> | 2019-08-01 19:33:20 +0300 | 
| commit | af011f924165ec895bd087cfeb27876ca656630e (patch) | |
| tree | 0d4b240dec77cbd51ea4844a0bd780ecdaf1a16f | |
| parent | af4329dbdabff4eb2bf7b93d42f44334f00904ea (diff) | |
SL-7628 Camera doesn't follow avatar, while avatar is sitting on physical object
| -rw-r--r-- | indra/newview/lltoolgrab.cpp | 11 | ||||
| -rw-r--r-- | indra/newview/llvoavatar.cpp | 21 | 
2 files changed, 29 insertions, 3 deletions
| diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp index f3e661e71a..429664e743 100644 --- a/indra/newview/lltoolgrab.cpp +++ b/indra/newview/lltoolgrab.cpp @@ -721,9 +721,14 @@ void LLToolGrabBase::handleHoverActive(S32 x, S32 y, MASK mask)  			!objectp->isHUDAttachment() &&   			objectp->getRoot() == gAgentAvatarp->getRoot())  		{ -			// force focus to point in space where we were looking previously -			gAgentCamera.setFocusGlobal(gAgentCamera.calcFocusPositionTargetGlobal(), LLUUID::null); -			gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); +			// we are essentially editing object position +			if (!gSavedSettings.getBOOL("EditCameraMovement")) +			{ +				// force focus to point in space where we were looking previously +				// Example of use: follow cam scripts shouldn't affect you when movng objects arouns +				gAgentCamera.setFocusGlobal(gAgentCamera.calcFocusPositionTargetGlobal(), LLUUID::null); +				gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); +			}  		}  		else  		{ diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 4428a2c33c..aa4207b016 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -78,6 +78,7 @@  #include "llselectmgr.h"  #include "llsprite.h"  #include "lltargetingmotion.h" +#include "lltoolmgr.h"  #include "lltoolmorph.h"  #include "llviewercamera.h"  #include "llviewertexlayer.h" @@ -7286,6 +7287,26 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object)  		{  			gAgentCamera.changeCameraToMouselook();  		} + +        if (gAgentCamera.getFocusOnAvatar() && LLToolMgr::getInstance()->inEdit()) +        { +            LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode(); +            if (node && node->mValid) +            { +                LLViewerObject* root_object = node->getObject(); +                if (root_object == sit_object) +                { +                    LLFloaterTools::sPreviousFocusOnAvatar = true; +                    if (!gSavedSettings.getBOOL("EditCameraMovement")) +                    { +                        // always freeze camera in space, even if camera doesn't move +                        // so, for example, follow cam scripts can't affect you when in build mode +                        gAgentCamera.setFocusGlobal(gAgentCamera.calcFocusPositionTargetGlobal(), LLUUID::null); +                        gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE); +                    } +                } +            } +        }  	}  	if (mDrawable.isNull()) | 
