From 323b49de171cb59bae0bea85f1d91be564ed8369 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Tue, 26 May 2015 01:05:37 -0400 Subject: [PATCH] [RLVa] @camunlock Causes LLAgentCamera::unlockView() to not happen, this turns off camera orbits. Enables sim camera constraints regardless of user preference. Resets camera when turned on. --- indra/newview/llagentcamera.cpp | 4 +++- indra/newview/lltoolfocus.cpp | 3 +++ indra/newview/rlvui.cpp | 10 ++++++++++ indra/newview/rlvui.h | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index af8bad3d6..43f929e31 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -369,6 +369,8 @@ void LLAgentCamera::resetView(BOOL reset_camera, BOOL change_camera) //----------------------------------------------------------------------------- void LLAgentCamera::unlockView() { + if (gRlvHandler.hasBehaviour(RLV_BHVR_CAMUNLOCK)) return; // [RLVa:LF] - camunlock + if (getFocusOnAvatar()) { if (isAgentAvatarValid()) @@ -1853,7 +1855,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit) static const LLCachedControl sg_ignore_sim_cam_consts("SGIgnoreSimulatorCameraConstraints",false); if ( !mCameraCollidePlane.isExactlyZero() - && !sg_ignore_sim_cam_consts + && (!sg_ignore_sim_cam_consts || gRlvHandler.hasBehaviour(RLV_BHVR_CAMUNLOCK)) && isAgentAvatarValid() && !gAgentAvatarp->isSitting()) { diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp index 2f2a32149..a6ceaec47 100644 --- a/indra/newview/lltoolfocus.cpp +++ b/indra/newview/lltoolfocus.cpp @@ -59,6 +59,7 @@ #include "llvoavatarself.h" #include "llmorphview.h" #include "llfloatercustomize.h" +#include "rlvhandler.h" // [RLVa:LF] - camunlock // Globals BOOL gCameraBtnZoom = TRUE; @@ -200,6 +201,8 @@ void LLToolCamera::pickCallback(const LLPickInfo& pick_info) else if (pick_info.mKeyMask & MASK_ALT || (LLToolMgr::getInstance()->getCurrentTool()->getName() == "Camera")) { + if (gRlvHandler.hasBehaviour(RLV_BHVR_CAMUNLOCK)) return; // [RLVa:LF] - camunlock + LLViewerObject* hit_obj = pick_info.getObject(); if (hit_obj) { diff --git a/indra/newview/rlvui.cpp b/indra/newview/rlvui.cpp index bd432d22f..0f44e73da 100644 --- a/indra/newview/rlvui.cpp +++ b/indra/newview/rlvui.cpp @@ -95,6 +95,9 @@ RlvUIEnabler::RlvUIEnabler() m_Handlers.insert(std::pair(RLV_BHVR_SHOWWORLDMAP, boost::bind(&RlvUIEnabler::onToggleShowWorldMap, this))); m_Handlers.insert(std::pair(RLV_BHVR_UNSIT, boost::bind(&RlvUIEnabler::onToggleUnsit, this))); + // onToggleCamXXX + m_Handlers.insert(std::pair(RLV_BHVR_CAMUNLOCK, boost::bind(&RlvUIEnabler::onToggleCamUnlock, this))); + // onToggleTp m_Handlers.insert(std::pair(RLV_BHVR_TPLOC, boost::bind(&RlvUIEnabler::onToggleTp, this))); m_Handlers.insert(std::pair(RLV_BHVR_TPLM, boost::bind(&RlvUIEnabler::onToggleTp, this))); @@ -346,6 +349,13 @@ void RlvUIEnabler::onToggleShowWorldMap() LLFloaterWorldMap::toggle(); } +// Checked: 2015-05-25 (RLVa:LF) +void RlvUIEnabler::onToggleCamUnlock() +{ + if (gRlvHandler.hasBehaviour(RLV_BHVR_CAMUNLOCK)) + gAgentCamera.resetView(true, true); +} + // Checked: 2010-08-22 (RLVa-1.2.1a) | Added: RLVa-1.2.1a void RlvUIEnabler::onToggleTp() { diff --git a/indra/newview/rlvui.h b/indra/newview/rlvui.h index 66d4338c5..ade2bab2b 100644 --- a/indra/newview/rlvui.h +++ b/indra/newview/rlvui.h @@ -54,6 +54,7 @@ protected: void onToggleShowNames(bool fQuitting); // shownames void onToggleShowNameTags(bool fQuitting); // shownametags void onToggleShowWorldMap(); // showworldmap + void onToggleCamUnlock(); // camunlock void onToggleTp(); // tploc and tplm void onToggleUnsit(); // unsit void onToggleViewXXX(); // viewnote, viewscript, viewtexture