From 6acc366b35b99049010dde076b46e5a7206c1332 Mon Sep 17 00:00:00 2001 From: Rye Mutt <rye@alchemyviewer.org> Date: Fri, 3 Apr 2020 23:48:36 -0400 Subject: [PATCH] Add options to disable point at beam and spiral effects --- .../newview/app_settings/settings_alchemy.xml | 22 ++++++++ indra/newview/llagentcamera.cpp | 16 ++++-- indra/newview/llappviewer.cpp | 13 +++-- indra/newview/llgiveinventory.cpp | 26 ++++++---- indra/newview/llselectmgr.cpp | 17 +++--- indra/newview/llstartup.cpp | 2 +- indra/newview/lltooldraganddrop.cpp | 52 ++++++++++++------- indra/newview/lltoolpie.cpp | 5 ++ indra/newview/lltoolplacer.cpp | 15 +++--- indra/newview/lltoolselect.cpp | 3 +- indra/newview/llviewermenu.cpp | 11 ++-- indra/newview/llviewermessage.cpp | 22 +++++--- indra/newview/llvoavatarself.cpp | 3 +- 13 files changed, 139 insertions(+), 68 deletions(-) diff --git a/indra/newview/app_settings/settings_alchemy.xml b/indra/newview/app_settings/settings_alchemy.xml index ecf73234be6..612c2bab8c6 100644 --- a/indra/newview/app_settings/settings_alchemy.xml +++ b/indra/newview/app_settings/settings_alchemy.xml @@ -211,6 +211,17 @@ <key>Value</key> <string>/tp2cam</string> </map> + <key>AlchemyDisableEffectSpiral</key> + <map> + <key>Comment</key> + <string>Disable spiral effects</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>AlchemyLookAtShow</key> <map> <key>Comment</key> @@ -288,6 +299,17 @@ <key>Value</key> <real>380.0</real> </map> + <key>AlchemyPointAtPrivate</key> + <map> + <key>Comment</key> + <string>Disable setting current point at target</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>AlchemyRainbowEffects</key> <map> <key>Comment</key> diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 1c600f5875f..bb83e303acf 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -2777,13 +2777,11 @@ BOOL LLAgentCamera::setLookAt(ELookAtType target_type, LLViewerObject *object, L static LLCachedControl<bool> isPrivate(gSavedSettings, "AlchemyLookAtPrivate", false); if (isPrivate) { - if(!mLookAt || mLookAt->isDead()) - return FALSE; - + target_type = LOOKAT_TARGET_CLEAR; + object = nullptr; position.clearVec(); - return mLookAt->setLookAt(LOOKAT_TARGET_NONE, gAgentAvatarp, position); } - if(object && object->isAttachment()) + else if(object && object->isAttachment()) { LLViewerObject* parent = object; while(parent) @@ -2900,6 +2898,14 @@ BOOL LLAgentCamera::setPointAt(EPointAtType target_type, LLViewerObject *object, { return FALSE; } + + static LLCachedControl<bool> disablePointAt(gSavedSettings, "AlchemyPointAtPrivate", false); + if (disablePointAt) + { + target_type = POINTAT_TARGET_CLEAR; + object = nullptr; + position.clear(); + } if (!mPointAt || mPointAt->isDead()) { mPointAt = (LLHUDEffectPointAt *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINTAT); diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 7ed74a70c6e..5f420d2b8d3 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -4014,11 +4014,14 @@ void LLAppViewer::requestQuit() gAgentAvatarp->updateAvatarRezMetrics(true); // force a last packet to be sent. } - LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE); - effectp->setPositionGlobal(gAgent.getPositionGlobal()); - effectp->setColor(LLColor4U(gAgent.getEffectColor())); - LLHUDManager::getInstance()->sendEffects(); - effectp->markDead() ;//remove it. + if (!gSavedSettings.getBOOL("AlchemyDisableEffectSpiral")) + { + LLHUDEffectSpiral* effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE); + effectp->setPositionGlobal(gAgent.getPositionGlobal()); + effectp->setColor(LLColor4U(gAgent.getEffectColor())); + LLHUDManager::getInstance()->sendEffects(); + effectp->markDead();//remove it. + } // Attempt to close all floaters that might be // editing things. diff --git a/indra/newview/llgiveinventory.cpp b/indra/newview/llgiveinventory.cpp index ca0054375a0..9534f724707 100644 --- a/indra/newview/llgiveinventory.cpp +++ b/indra/newview/llgiveinventory.cpp @@ -437,11 +437,14 @@ void LLGiveInventory::commitGiveInventoryItem(const LLUUID& to_agent, gAgent.sendReliableMessage(); // VEFFECT: giveInventory - LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); - effectp->setSourceObject(gAgentAvatarp); - effectp->setTargetObject(gObjectList.findObject(to_agent)); - effectp->setDuration(LL_HUD_DUR_SHORT); - effectp->setColor(LLColor4U(gAgent.getEffectColor())); + if (!gSavedSettings.getBOOL("AlchemyPointAtPrivate")) + { + LLHUDEffectSpiral* effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); + effectp->setSourceObject(gAgentAvatarp); + effectp->setTargetObject(gObjectList.findObject(to_agent)); + effectp->setDuration(LL_HUD_DUR_SHORT); + effectp->setColor(LLColor4U(gAgent.getEffectColor())); + } gFloaterTools->dirty(); LLMuteList::getInstance()->autoRemove(to_agent, LLMuteList::AR_INVENTORY); @@ -611,11 +614,14 @@ bool LLGiveInventory::commitGiveInventoryCategory(const LLUUID& to_agent, delete[] bucket; // VEFFECT: giveInventoryCategory - LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); - effectp->setSourceObject(gAgentAvatarp); - effectp->setTargetObject(gObjectList.findObject(to_agent)); - effectp->setDuration(LL_HUD_DUR_SHORT); - effectp->setColor(LLColor4U(gAgent.getEffectColor())); + if (!gSavedSettings.getBOOL("AlchemyPointAtPrivate")) + { + LLHUDEffectSpiral* effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); + effectp->setSourceObject(gAgentAvatarp); + effectp->setTargetObject(gObjectList.findObject(to_agent)); + effectp->setDuration(LL_HUD_DUR_SHORT); + effectp->setColor(LLColor4U(gAgent.getEffectColor())); + } gFloaterTools->dirty(); LLMuteList::getInstance()->autoRemove(to_agent, LLMuteList::AR_INVENTORY); diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index acd039e411b..fe45467b8a4 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -1752,12 +1752,15 @@ void LLSelectMgr::selectionSetImage(const LLUUID& imageid) if (!mItem) { object->sendTEUpdate(); - // 1 particle effect per object - LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); - effectp->setSourceObject(gAgentAvatarp); - effectp->setTargetObject(object); - effectp->setDuration(LL_HUD_DUR_SHORT); - effectp->setColor(LLColor4U(gAgent.getEffectColor())); + if (!gSavedSettings.getBOOL("AlchemyPointAtPrivate")) + { + // 1 particle effect per object + LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); + effectp->setSourceObject(gAgentAvatarp); + effectp->setTargetObject(object); + effectp->setDuration(LL_HUD_DUR_SHORT); + effectp->setColor(LLColor4U(gAgent.getEffectColor())); + } } return true; } @@ -3737,7 +3740,7 @@ bool LLSelectMgr::confirmDelete(const LLSD& notification, const LLSD& response, (void*) &info, SEND_ONLY_ROOTS); // VEFFECT: Delete Object - one effect for all deletes - if (LLSelectMgr::getInstance()->mSelectedObjects->mSelectType != SELECT_TYPE_HUD) + if (!gSavedSettings.getBOOL("AlchemyDisableEffectSpiral") && (LLSelectMgr::getInstance()->mSelectedObjects->mSelectType != SELECT_TYPE_HUD)) { LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE); effectp->setPositionGlobal( LLSelectMgr::getInstance()->getSelectionCenterGlobal() ); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 1664587fd81..a38679f3121 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1596,7 +1596,7 @@ bool idle_startup() // Create login effect // But not on first login, because you can't see your avatar then - if (!gAgent.isFirstLogin()) + if (!gAgent.isFirstLogin()&& !gSavedSettings.getBOOL("AlchemyDisableEffectSpiral")) { LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE); effectp->setPositionGlobal(gAgent.getPositionGlobal()); diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 7044a1827e9..ce323e22445 100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -1221,11 +1221,14 @@ void LLToolDragAndDrop::dropScript(LLViewerObject* hit_obj, gFloaterTools->dirty(); // VEFFECT: SetScript - LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); - effectp->setSourceObject(gAgentAvatarp); - effectp->setTargetObject(hit_obj); - effectp->setDuration(LL_HUD_DUR_SHORT); - effectp->setColor(LLColor4U(gAgent.getEffectColor())); + if (!gSavedSettings.getBOOL("AlchemyPointAtPrivate")) + { + LLHUDEffectSpiral* effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); + effectp->setSourceObject(gAgentAvatarp); + effectp->setTargetObject(hit_obj); + effectp->setDuration(LL_HUD_DUR_SHORT); + effectp->setColor(LLColor4U(gAgent.getEffectColor())); + } } } @@ -1390,11 +1393,14 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target, } // VEFFECT: DropObject - LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); - effectp->setSourceObject(gAgentAvatarp); - effectp->setPositionGlobal(mLastHitPos); - effectp->setDuration(LL_HUD_DUR_SHORT); - effectp->setColor(LLColor4U(gAgent.getEffectColor())); + if (!gSavedSettings.getBOOL("AlchemyPointAtPrivate")) + { + LLHUDEffectSpiral* effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); + effectp->setSourceObject(gAgentAvatarp); + effectp->setPositionGlobal(mLastHitPos); + effectp->setDuration(LL_HUD_DUR_SHORT); + effectp->setColor(LLColor4U(gAgent.getEffectColor())); + } add(LLStatViewer::OBJECT_REZ, 1); } @@ -1453,11 +1459,14 @@ void LLToolDragAndDrop::dropInventory(LLViewerObject* hit_obj, } // VEFFECT: AddToInventory - LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); - effectp->setSourceObject(gAgentAvatarp); - effectp->setTargetObject(hit_obj); - effectp->setDuration(LL_HUD_DUR_SHORT); - effectp->setColor(LLColor4U(gAgent.getEffectColor())); + if (!gSavedSettings.getBOOL("AlchemyPointAtPrivate")) + { + LLHUDEffectSpiral* effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); + effectp->setSourceObject(gAgentAvatarp); + effectp->setTargetObject(hit_obj); + effectp->setDuration(LL_HUD_DUR_SHORT); + effectp->setColor(LLColor4U(gAgent.getEffectColor())); + } gFloaterTools->dirty(); } @@ -2057,11 +2066,14 @@ EAcceptance LLToolDragAndDrop::dad3dApplyToObject( } // VEFFECT: SetTexture - LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); - effectp->setSourceObject(gAgentAvatarp); - effectp->setTargetObject(obj); - effectp->setDuration(LL_HUD_DUR_SHORT); - effectp->setColor(LLColor4U(gAgent.getEffectColor())); + if (!gSavedSettings.getBOOL("AlchemyPointAtPrivate")) + { + LLHUDEffectSpiral* effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); + effectp->setSourceObject(gAgentAvatarp); + effectp->setTargetObject(obj); + effectp->setDuration(LL_HUD_DUR_SHORT); + effectp->setColor(LLColor4U(gAgent.getEffectColor())); + } } // enable multi-drop, although last texture will win diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index aedf03219e2..a1a063b1110 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -1999,6 +1999,11 @@ BOOL LLToolPie::handleRightClickPick() void LLToolPie::showVisualContextMenuEffect() { + if (gSavedSettings.getBOOL("AlchemyDisableEffectSpiral")) + { + return; + } + // VEFFECT: ShowPie LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_SPHERE, TRUE); effectp->setPositionGlobal(mPick.mPosGlobal); diff --git a/indra/newview/lltoolplacer.cpp b/indra/newview/lltoolplacer.cpp index 864d0d77b02..a3d13ed8435 100644 --- a/indra/newview/lltoolplacer.cpp +++ b/indra/newview/lltoolplacer.cpp @@ -443,12 +443,15 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics ) gViewerWindow->getWindow()->incBusyCount(); } - // VEFFECT: AddObject - LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); - effectp->setSourceObject((LLViewerObject*)gAgentAvatarp); - effectp->setPositionGlobal(regionp->getPosGlobalFromRegion(ray_end_region)); - effectp->setDuration(LL_HUD_DUR_SHORT); - effectp->setColor(LLColor4U(gAgent.getEffectColor())); + if (!gSavedSettings.getBOOL("AlchemyPointAtPrivate")) + { + // VEFFECT: AddObject + LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BEAM, TRUE); + effectp->setSourceObject((LLViewerObject*)gAgentAvatarp); + effectp->setPositionGlobal(regionp->getPosGlobalFromRegion(ray_end_region)); + effectp->setDuration(LL_HUD_DUR_SHORT); + effectp->setColor(LLColor4U(gAgent.getEffectColor())); + } add(LLStatViewer::OBJECT_CREATE, 1); diff --git a/indra/newview/lltoolselect.cpp b/indra/newview/lltoolselect.cpp index 3a956aaa91d..aa9e2b17881 100644 --- a/indra/newview/lltoolselect.cpp +++ b/indra/newview/lltoolselect.cpp @@ -224,7 +224,8 @@ LLObjectSelectionHandle LLToolSelect::handleObjectSelection(const LLPickInfo& pi LLSelectMgr::getInstance()->setAgentHUDZoom(target_zoom, current_zoom); } - if (!gAgentCamera.getFocusOnAvatar() && // if camera not glued to avatar + static LLCachedControl<bool> disablePointAt(gSavedSettings, "AlchemyPointAtPrivate", false); + if (!disablePointAt && !gAgentCamera.getFocusOnAvatar() && // if camera not glued to avatar LLVOAvatar::findAvatarFromAttachment(object) != gAgentAvatarp && // and it's not one of your attachments object != gAgentAvatarp) // and it's not you { diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index b3eea482c09..85fac2db26b 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -4633,10 +4633,13 @@ static void derez_objects( LLViewerObject* object = objectsp->at(object_index++); msg->nextBlockFast(_PREHASH_ObjectData); msg->addU32Fast(_PREHASH_ObjectLocalID, object->getLocalID()); - // VEFFECT: DerezObject - LLHUDEffectSpiral* effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE); - effectp->setPositionGlobal(object->getPositionGlobal()); - effectp->setColor(LLColor4U(gAgent.getEffectColor())); + if (!gSavedSettings.getBOOL("AlchemyDisableEffectSpiral")) + { + // VEFFECT: DerezObject + LLHUDEffectSpiral* effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE); + effectp->setPositionGlobal(object->getPositionGlobal()); + effectp->setColor(LLColor4U(gAgent.getEffectColor())); + } } msg->sendReliable(first_region->getHost()); } diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 4da3f9531fc..3e98d8ff900 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -3187,10 +3187,13 @@ void process_teleport_finish(LLMessageSystem* msg, void**) // Do teleport effect for where you're leaving // VEFFECT: TeleportStart - LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE); - effectp->setPositionGlobal(gAgent.getPositionGlobal()); - effectp->setColor(LLColor4U(gAgent.getEffectColor())); - LLHUDManager::getInstance()->sendEffects(); + if (!gSavedSettings.getBOOL("AlchemyDisableEffectSpiral")) + { + LLHUDEffectSpiral* effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE); + effectp->setPositionGlobal(gAgent.getPositionGlobal()); + effectp->setColor(LLColor4U(gAgent.getEffectColor())); + LLHUDManager::getInstance()->sendEffects(); + } U32 location_id; U32 sim_ip; @@ -3274,11 +3277,14 @@ void process_teleport_finish(LLMessageSystem* msg, void**) // Now do teleport effect for where you're going. // VEFFECT: TeleportEnd - effectp = (LLHUDEffectSpiral *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE); - effectp->setPositionGlobal(gAgent.getPositionGlobal()); + if (!gSavedSettings.getBOOL("AlchemyDisableEffectSpiral")) + { + auto effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE); + effectp->setPositionGlobal(gAgent.getPositionGlobal()); - effectp->setColor(LLColor4U(gAgent.getEffectColor())); - LLHUDManager::getInstance()->sendEffects(); + effectp->setColor(LLColor4U(gAgent.getEffectColor())); + LLHUDManager::getInstance()->sendEffects(); + } // gTeleportDisplay = TRUE; // gTeleportDisplayTimer.reset(); diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 61ad196f3ba..0ccf7f5bf15 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -982,8 +982,9 @@ void LLVOAvatarSelf::updateRegion(LLViewerRegion *regionp) //virtual void LLVOAvatarSelf::idleUpdateTractorBeam() { + static LLCachedControl<bool> pointAtDisable(gSavedSettings, "AlchemyPointAtPrivate"); // This is only done for yourself (maybe it should be in the agent?) - if (!needsRenderBeam() || !isBuilt()) + if (pointAtDisable || !needsRenderBeam() || !isBuilt()) { mBeam = NULL; } -- GitLab