From ed6148d6c6c554223dc4b2dab0c729d3b5698158 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Fri, 26 Jul 2024 21:49:36 +0300 Subject: viewer#2113 Optional disable eyes/head follow cursor/lookat Intended for photography, but there is curently no nice way to present it so it's in debug options until we get some critical mass of features that can be collected into a single whole. --- indra/newview/app_settings/settings.xml | 11 +++++++++++ indra/newview/llhudeffectlookat.cpp | 21 +++++++++++++++++++-- indra/newview/skins/default/xui/en/menu_viewer.xml | 10 ++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 97cab58eb1..9e5d3f09bd 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -14218,6 +14218,17 @@ Boolean Value 0 + + DisableLookAtAnimation + + Comment + Avatar follows cursor with avatars eyes, when disabled, avatar will look forward + Persist + 0 + Type + Boolean + Value + 0 WebProfileFloaterRect diff --git a/indra/newview/llhudeffectlookat.cpp b/indra/newview/llhudeffectlookat.cpp index c8b7e00776..d0d2ee191a 100644 --- a/indra/newview/llhudeffectlookat.cpp +++ b/indra/newview/llhudeffectlookat.cpp @@ -36,6 +36,7 @@ #include "llvoavatar.h" #include "lldrawable.h" #include "llviewerobjectlist.h" +#include "llviewercontrol.h" #include "llrendersphere.h" #include "llselectmgr.h" #include "llglheaders.h" @@ -561,8 +562,16 @@ void LLHUDEffectLookAt::update() { if (calcTargetPosition()) { + static LLCachedControl disable_look_at(gSavedSettings, "DisableLookAtAnimation", true); LLMotion* head_motion = ((LLVOAvatar*)(LLViewerObject*)mSourceObject)->findMotion(ANIM_AGENT_HEAD_ROT); - if (!head_motion || head_motion->isStopped()) + if (disable_look_at()) + { + if (head_motion) + { + ((LLVOAvatar*)(LLViewerObject*)mSourceObject)->stopMotion(ANIM_AGENT_HEAD_ROT); + } + } + else if (!head_motion || head_motion->isStopped()) { ((LLVOAvatar*)(LLViewerObject*)mSourceObject)->startMotion(ANIM_AGENT_HEAD_ROT); } @@ -665,7 +674,15 @@ bool LLHUDEffectLookAt::calcTargetPosition() if (!mTargetPos.isFinite()) return false; - source_avatar->setAnimationData("LookAtPoint", (void *)&mTargetPos); + static LLCachedControl disable_look_at(gSavedSettings, "DisableLookAtAnimation", true); + if (disable_look_at()) + { + source_avatar->removeAnimationData("LookAtPoint"); + } + else + { + source_avatar->setAnimationData("LookAtPoint", (void*)&mTargetPos); + } return true; } diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 347638249b..941f0c6bb7 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -3966,6 +3966,16 @@ function="World.EnvPreset" function="ToggleControl" parameter="AllowSelectAvatar" /> + + + + -- cgit v1.2.3