From 98a21e2d491fc12808751db7edc960810226bccd Mon Sep 17 00:00:00 2001 From: McCabe Maxsted Date: Thu, 27 May 2010 02:46:02 -0700 Subject: Added checkbox in Preferences > Input and Camera to disable the minimum zoom in distance (DisableMinZoomDist) --- linden/indra/newview/app_settings/settings.xml | 11 ++++++ linden/indra/newview/llagent.cpp | 43 +++++++++++++--------- linden/indra/newview/llpanelinput.cpp | 5 +++ .../default/xui/en-us/panel_preferences_input.xml | 7 +++- 4 files changed, 48 insertions(+), 18 deletions(-) (limited to 'linden/indra') diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml index 670de2b..952efc7 100644 --- a/linden/indra/newview/app_settings/settings.xml +++ b/linden/indra/newview/app_settings/settings.xml @@ -70,6 +70,17 @@ Value 0 + DisableMinZoomDist + + Comment + Disable minimum zoom distance limits + Persist + 1 + Type + Boolean + Value + 0 + DisableTeleportScreens Comment diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp index 4753bc8..e2be0d0 100644 --- a/linden/indra/newview/llagent.cpp +++ b/linden/indra/newview/llagent.cpp @@ -1780,12 +1780,12 @@ void LLAgent::setCameraZoomFraction(F32 fraction) // 0.f -> camera zoomed all the way out // 1.f -> camera zoomed all the way in LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); - + BOOL disable_min = gSavedSettings.getBOOL("DisableMinZoomDist"); if (selection->getObjectCount() && selection->getSelectType() == SELECT_TYPE_HUD) { mHUDTargetZoom = fraction; } - else if (mFocusOnAvatar && cameraThirdPerson()) + else if (mFocusOnAvatar && cameraThirdPerson() && !disable_min) { mCameraZoomFraction = rescale(fraction, 0.f, 1.f, MAX_ZOOM_FRACTION, MIN_ZOOM_FRACTION); } @@ -1802,7 +1802,7 @@ void LLAgent::setCameraZoomFraction(F32 fraction) LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE, MAX_CAMERA_DISTANCE_FROM_AGENT); - if (mFocusObject.notNull()) + if (!disable_min) { if (mFocusObject.notNull()) { @@ -1816,6 +1816,10 @@ void LLAgent::setCameraZoomFraction(F32 fraction) } } } + else + { + min_zoom = 0.f; + } LLVector3d camera_offset_dir = mCameraFocusOffsetTarget; camera_offset_dir.normalize(); @@ -1906,30 +1910,34 @@ void LLAgent::cameraZoomIn(const F32 fraction) LLVector3d camera_offset(mCameraFocusOffsetTarget); LLVector3d camera_offset_unit(mCameraFocusOffsetTarget); - F32 min_zoom = LAND_MIN_ZOOM; + F32 min_zoom = 0.f;//LAND_MIN_ZOOM; F32 current_distance = (F32)camera_offset_unit.normalize(); F32 new_distance = current_distance * fraction; // Don't move through focus point - if (mFocusObject) + + if (!gSavedSettings.getBOOL("DisableMinZoomDist")) { - LLVector3 camera_offset_dir((F32)camera_offset_unit.mdV[VX], (F32)camera_offset_unit.mdV[VY], (F32)camera_offset_unit.mdV[VZ]); - - if (mFocusObject->isAvatar()) - { - calcCameraMinDistance(min_zoom); - } - else + if (mFocusObject) { - min_zoom = OBJECT_MIN_ZOOM; + LLVector3 camera_offset_dir((F32)camera_offset_unit.mdV[VX], (F32)camera_offset_unit.mdV[VY], (F32)camera_offset_unit.mdV[VZ]); + if (mFocusObject->isAvatar()) + { + calcCameraMinDistance(min_zoom); + } + else + { + min_zoom = OBJECT_MIN_ZOOM; + } } + new_distance = llmax(new_distance, min_zoom); } // Don't zoom too far back // Actually, let's when disable camera constraints is active -- McCabe if (!gSavedSettings.getBOOL("DisableCameraConstraints")) { - new_distance = llmax(new_distance, min_zoom); + //new_distance = llmax(new_distance, min_zoom); F32 max_distance = llmin(mDrawDistance - DIST_FUDGE, LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE ); @@ -1947,7 +1955,7 @@ void LLAgent::cameraZoomIn(const F32 fraction) */ } - if( cameraCustomizeAvatar() ) + if( cameraCustomizeAvatar() && !gSavedSettings.getBOOL("DisableMinZoomDist")) { new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM ); } @@ -3679,7 +3687,8 @@ F32 LLAgent::calcCameraFOVZoomFactor() // don't FOV zoom on mostly transparent objects LLVector3 focus_offset = mFocusObjectOffset; F32 obj_min_dist = 0.f; - calcCameraMinDistance(obj_min_dist); + if (!gSavedSettings.getBOOL("DisableMinZoomDist")) + calcCameraMinDistance(obj_min_dist); F32 current_distance = llmax(0.001f, camera_offset_dir.magVec()); mFocusObjectDist = obj_min_dist - current_distance; @@ -3825,7 +3834,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit) camera_distance = local_camera_offset.normalize(); } - mTargetCameraDistance = llmax(camera_distance, MIN_CAMERA_DISTANCE); + mTargetCameraDistance = (gSavedSettings.getBOOL("DisableMinZoomDist")) ? camera_distance : llmax(camera_distance, MIN_CAMERA_DISTANCE); if (mTargetCameraDistance != mCurrentCameraDistance) { diff --git a/linden/indra/newview/llpanelinput.cpp b/linden/indra/newview/llpanelinput.cpp index d530d67..32c4af3 100644 --- a/linden/indra/newview/llpanelinput.cpp +++ b/linden/indra/newview/llpanelinput.cpp @@ -77,6 +77,9 @@ BOOL LLPanelInput::postBuild() childSetValue("double_click_action", gSavedSettings.getString("DoubleClickAction")); childSetValue("go_action", gSavedSettings.getString("GoAction")); + childSetValue("Disable camera constraints", gSavedSettings.getBOOL("DisableCameraConstraints")); + childSetValue("disable_min_zoom_check", gSavedSettings.getBOOL("DisableMinZoomDist")); + return TRUE; } @@ -104,6 +107,8 @@ void LLPanelInput::apply() gSavedSettings.setString("DoubleClickAction", childGetValue("double_click_action")); gSavedSettings.setString("GoAction", childGetValue("go_action")); + gSavedSettings.setBOOL("DisableCameraConstraints", childGetValue("Disable camera constraints")); + gSavedSettings.setBOOL("DisableMinZoomDist", childGetValue("disable_min_zoom_check")); } void LLPanelInput::cancel() diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml index fa4f3a5..7a5f22d 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml @@ -89,11 +89,16 @@ label="Automatic Appearance Camera Movement" left="148" mouse_opaque="true" name="appearance_camera_movement" radio_style="false" tool_tip="Use automatic camera positioning while in edit mode" width="242" /> - +