diff options
Diffstat (limited to '')
-rw-r--r-- | linden/indra/newview/llagent.cpp | 43 |
1 files changed, 26 insertions, 17 deletions
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) | |||
1780 | // 0.f -> camera zoomed all the way out | 1780 | // 0.f -> camera zoomed all the way out |
1781 | // 1.f -> camera zoomed all the way in | 1781 | // 1.f -> camera zoomed all the way in |
1782 | LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); | 1782 | LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); |
1783 | 1783 | BOOL disable_min = gSavedSettings.getBOOL("DisableMinZoomDist"); | |
1784 | if (selection->getObjectCount() && selection->getSelectType() == SELECT_TYPE_HUD) | 1784 | if (selection->getObjectCount() && selection->getSelectType() == SELECT_TYPE_HUD) |
1785 | { | 1785 | { |
1786 | mHUDTargetZoom = fraction; | 1786 | mHUDTargetZoom = fraction; |
1787 | } | 1787 | } |
1788 | else if (mFocusOnAvatar && cameraThirdPerson()) | 1788 | else if (mFocusOnAvatar && cameraThirdPerson() && !disable_min) |
1789 | { | 1789 | { |
1790 | mCameraZoomFraction = rescale(fraction, 0.f, 1.f, MAX_ZOOM_FRACTION, MIN_ZOOM_FRACTION); | 1790 | mCameraZoomFraction = rescale(fraction, 0.f, 1.f, MAX_ZOOM_FRACTION, MIN_ZOOM_FRACTION); |
1791 | } | 1791 | } |
@@ -1802,7 +1802,7 @@ void LLAgent::setCameraZoomFraction(F32 fraction) | |||
1802 | LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE, | 1802 | LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE, |
1803 | MAX_CAMERA_DISTANCE_FROM_AGENT); | 1803 | MAX_CAMERA_DISTANCE_FROM_AGENT); |
1804 | 1804 | ||
1805 | if (mFocusObject.notNull()) | 1805 | if (!disable_min) |
1806 | { | 1806 | { |
1807 | if (mFocusObject.notNull()) | 1807 | if (mFocusObject.notNull()) |
1808 | { | 1808 | { |
@@ -1816,6 +1816,10 @@ void LLAgent::setCameraZoomFraction(F32 fraction) | |||
1816 | } | 1816 | } |
1817 | } | 1817 | } |
1818 | } | 1818 | } |
1819 | else | ||
1820 | { | ||
1821 | min_zoom = 0.f; | ||
1822 | } | ||
1819 | 1823 | ||
1820 | LLVector3d camera_offset_dir = mCameraFocusOffsetTarget; | 1824 | LLVector3d camera_offset_dir = mCameraFocusOffsetTarget; |
1821 | camera_offset_dir.normalize(); | 1825 | camera_offset_dir.normalize(); |
@@ -1906,30 +1910,34 @@ void LLAgent::cameraZoomIn(const F32 fraction) | |||
1906 | 1910 | ||
1907 | LLVector3d camera_offset(mCameraFocusOffsetTarget); | 1911 | LLVector3d camera_offset(mCameraFocusOffsetTarget); |
1908 | LLVector3d camera_offset_unit(mCameraFocusOffsetTarget); | 1912 | LLVector3d camera_offset_unit(mCameraFocusOffsetTarget); |
1909 | F32 min_zoom = LAND_MIN_ZOOM; | 1913 | F32 min_zoom = 0.f;//LAND_MIN_ZOOM; |
1910 | F32 current_distance = (F32)camera_offset_unit.normalize(); | 1914 | F32 current_distance = (F32)camera_offset_unit.normalize(); |
1911 | F32 new_distance = current_distance * fraction; | 1915 | F32 new_distance = current_distance * fraction; |
1912 | 1916 | ||
1913 | // Don't move through focus point | 1917 | // Don't move through focus point |
1914 | if (mFocusObject) | 1918 | |
1919 | if (!gSavedSettings.getBOOL("DisableMinZoomDist")) | ||
1915 | { | 1920 | { |
1916 | LLVector3 camera_offset_dir((F32)camera_offset_unit.mdV[VX], (F32)camera_offset_unit.mdV[VY], (F32)camera_offset_unit.mdV[VZ]); | 1921 | if (mFocusObject) |
1917 | |||
1918 | if (mFocusObject->isAvatar()) | ||
1919 | { | ||
1920 | calcCameraMinDistance(min_zoom); | ||
1921 | } | ||
1922 | else | ||
1923 | { | 1922 | { |
1924 | min_zoom = OBJECT_MIN_ZOOM; | 1923 | LLVector3 camera_offset_dir((F32)camera_offset_unit.mdV[VX], (F32)camera_offset_unit.mdV[VY], (F32)camera_offset_unit.mdV[VZ]); |
1924 | if (mFocusObject->isAvatar()) | ||
1925 | { | ||
1926 | calcCameraMinDistance(min_zoom); | ||
1927 | } | ||
1928 | else | ||
1929 | { | ||
1930 | min_zoom = OBJECT_MIN_ZOOM; | ||
1931 | } | ||
1925 | } | 1932 | } |
1933 | new_distance = llmax(new_distance, min_zoom); | ||
1926 | } | 1934 | } |
1927 | 1935 | ||
1928 | // Don't zoom too far back | 1936 | // Don't zoom too far back |
1929 | // Actually, let's when disable camera constraints is active -- McCabe | 1937 | // Actually, let's when disable camera constraints is active -- McCabe |
1930 | if (!gSavedSettings.getBOOL("DisableCameraConstraints")) | 1938 | if (!gSavedSettings.getBOOL("DisableCameraConstraints")) |
1931 | { | 1939 | { |
1932 | new_distance = llmax(new_distance, min_zoom); | 1940 | //new_distance = llmax(new_distance, min_zoom); |
1933 | 1941 | ||
1934 | F32 max_distance = llmin(mDrawDistance - DIST_FUDGE, | 1942 | F32 max_distance = llmin(mDrawDistance - DIST_FUDGE, |
1935 | LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE ); | 1943 | LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE ); |
@@ -1947,7 +1955,7 @@ void LLAgent::cameraZoomIn(const F32 fraction) | |||
1947 | */ | 1955 | */ |
1948 | } | 1956 | } |
1949 | 1957 | ||
1950 | if( cameraCustomizeAvatar() ) | 1958 | if( cameraCustomizeAvatar() && !gSavedSettings.getBOOL("DisableMinZoomDist")) |
1951 | { | 1959 | { |
1952 | new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM ); | 1960 | new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM ); |
1953 | } | 1961 | } |
@@ -3679,7 +3687,8 @@ F32 LLAgent::calcCameraFOVZoomFactor() | |||
3679 | // don't FOV zoom on mostly transparent objects | 3687 | // don't FOV zoom on mostly transparent objects |
3680 | LLVector3 focus_offset = mFocusObjectOffset; | 3688 | LLVector3 focus_offset = mFocusObjectOffset; |
3681 | F32 obj_min_dist = 0.f; | 3689 | F32 obj_min_dist = 0.f; |
3682 | calcCameraMinDistance(obj_min_dist); | 3690 | if (!gSavedSettings.getBOOL("DisableMinZoomDist")) |
3691 | calcCameraMinDistance(obj_min_dist); | ||
3683 | F32 current_distance = llmax(0.001f, camera_offset_dir.magVec()); | 3692 | F32 current_distance = llmax(0.001f, camera_offset_dir.magVec()); |
3684 | 3693 | ||
3685 | mFocusObjectDist = obj_min_dist - current_distance; | 3694 | mFocusObjectDist = obj_min_dist - current_distance; |
@@ -3825,7 +3834,7 @@ LLVector3d LLAgent::calcCameraPositionTargetGlobal(BOOL *hit_limit) | |||
3825 | camera_distance = local_camera_offset.normalize(); | 3834 | camera_distance = local_camera_offset.normalize(); |
3826 | } | 3835 | } |
3827 | 3836 | ||
3828 | mTargetCameraDistance = llmax(camera_distance, MIN_CAMERA_DISTANCE); | 3837 | mTargetCameraDistance = (gSavedSettings.getBOOL("DisableMinZoomDist")) ? camera_distance : llmax(camera_distance, MIN_CAMERA_DISTANCE); |
3829 | 3838 | ||
3830 | if (mTargetCameraDistance != mCurrentCameraDistance) | 3839 | if (mTargetCameraDistance != mCurrentCameraDistance) |
3831 | { | 3840 | { |