aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview/llagent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/newview/llagent.cpp')
-rw-r--r--linden/indra/newview/llagent.cpp107
1 files changed, 61 insertions, 46 deletions
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp
index e6438f4..022e1cc 100644
--- a/linden/indra/newview/llagent.cpp
+++ b/linden/indra/newview/llagent.cpp
@@ -187,6 +187,8 @@ const F32 OBJECT_MIN_ZOOM = 0.02f;
187const F32 APPEARANCE_MIN_ZOOM = 0.39f; 187const F32 APPEARANCE_MIN_ZOOM = 0.39f;
188const F32 APPEARANCE_MAX_ZOOM = 8.f; 188const F32 APPEARANCE_MAX_ZOOM = 8.f;
189 189
190const F32 DIST_FUDGE = 16.f; // meters
191
190// fidget constants 192// fidget constants
191const F32 MIN_FIDGET_TIME = 8.f; // seconds 193const F32 MIN_FIDGET_TIME = 8.f; // seconds
192const F32 MAX_FIDGET_TIME = 20.f; // seconds 194const F32 MAX_FIDGET_TIME = 20.f; // seconds
@@ -1716,6 +1718,10 @@ F32 LLAgent::getCameraZoomFraction()
1716 // already [0,1] 1718 // already [0,1]
1717 return mHUDTargetZoom; 1719 return mHUDTargetZoom;
1718 } 1720 }
1721 else if (gSavedSettings.getBOOL("DisableCameraConstraints"))
1722 {
1723 return mCameraZoomFraction;
1724 }
1719 else if (mFocusOnAvatar && cameraThirdPerson()) 1725 else if (mFocusOnAvatar && cameraThirdPerson())
1720 { 1726 {
1721 return clamp_rescale(mCameraZoomFraction, MIN_ZOOM_FRACTION, MAX_ZOOM_FRACTION, 1.f, 0.f); 1727 return clamp_rescale(mCameraZoomFraction, MIN_ZOOM_FRACTION, MAX_ZOOM_FRACTION, 1.f, 0.f);
@@ -1728,7 +1734,6 @@ F32 LLAgent::getCameraZoomFraction()
1728 else 1734 else
1729 { 1735 {
1730 F32 min_zoom; 1736 F32 min_zoom;
1731 const F32 DIST_FUDGE = 16.f; // meters
1732 F32 max_zoom = llmin(mDrawDistance - DIST_FUDGE, 1737 F32 max_zoom = llmin(mDrawDistance - DIST_FUDGE,
1733 LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE, 1738 LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE,
1734 MAX_CAMERA_DISTANCE_FROM_AGENT); 1739 MAX_CAMERA_DISTANCE_FROM_AGENT);
@@ -1777,10 +1782,9 @@ void LLAgent::setCameraZoomFraction(F32 fraction)
1777 else 1782 else
1778 { 1783 {
1779 F32 min_zoom = LAND_MIN_ZOOM; 1784 F32 min_zoom = LAND_MIN_ZOOM;
1780 const F32 DIST_FUDGE = 16.f; // meters
1781 F32 max_zoom = llmin(mDrawDistance - DIST_FUDGE, 1785 F32 max_zoom = llmin(mDrawDistance - DIST_FUDGE,
1782 LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE, 1786 LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE,
1783 MAX_CAMERA_DISTANCE_FROM_AGENT); 1787 MAX_CAMERA_DISTANCE_FROM_AGENT);
1784 1788
1785 if (mFocusObject.notNull()) 1789 if (mFocusObject.notNull())
1786 { 1790 {
@@ -1799,7 +1803,14 @@ void LLAgent::setCameraZoomFraction(F32 fraction)
1799 1803
1800 LLVector3d camera_offset_dir = mCameraFocusOffsetTarget; 1804 LLVector3d camera_offset_dir = mCameraFocusOffsetTarget;
1801 camera_offset_dir.normalize(); 1805 camera_offset_dir.normalize();
1802 mCameraFocusOffsetTarget = camera_offset_dir * rescale(fraction, 0.f, 1.f, max_zoom, min_zoom); 1806 if (gSavedSettings.getBOOL("DisableCameraConstraints"))
1807 {
1808 mCameraFocusOffsetTarget = camera_offset_dir * rescale(fraction, 0.f, 262140.f, 1.f, min_zoom);
1809 }
1810 else
1811 {
1812 mCameraFocusOffsetTarget = camera_offset_dir * rescale(fraction, 0.f, 1.f, max_zoom, min_zoom);
1813 }
1803 } 1814 }
1804 startCameraAnimation(); 1815 startCameraAnimation();
1805} 1816}
@@ -1898,29 +1909,32 @@ void LLAgent::cameraZoomIn(const F32 fraction)
1898 } 1909 }
1899 } 1910 }
1900 1911
1901 new_distance = llmax(new_distance, min_zoom);
1902
1903 // Don't zoom too far back 1912 // Don't zoom too far back
1904 const F32 DIST_FUDGE = 16.f; // meters 1913 // Actually, let's when disable camera constraints is active -- McCabe
1905 F32 max_distance = llmin(mDrawDistance - DIST_FUDGE, 1914 if (!gSavedSettings.getBOOL("DisableCameraConstraints"))
1906 LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE );
1907
1908 if (new_distance > max_distance)
1909 { 1915 {
1910 new_distance = max_distance; 1916 new_distance = llmax(new_distance, min_zoom);
1911 1917
1912 /* 1918 F32 max_distance = llmin(mDrawDistance - DIST_FUDGE,
1913 // Unless camera is unlocked 1919 LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE );
1914 if (!LLViewerCamera::sDisableCameraConstraints) 1920
1921 if (new_distance > max_distance)
1915 { 1922 {
1916 return; 1923 new_distance = max_distance;
1924
1925 /*
1926 // Unless camera is unlocked
1927 if (!LLViewerCamera::sDisableCameraConstraints)
1928 {
1929 return;
1930 }
1931 */
1917 } 1932 }
1918 */
1919 }
1920 1933
1921 if( cameraCustomizeAvatar() ) 1934 if( cameraCustomizeAvatar() )
1922 { 1935 {
1923 new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM ); 1936 new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM );
1937 }
1924 } 1938 }
1925 1939
1926 mCameraFocusOffsetTarget = new_distance * camera_offset_unit; 1940 mCameraFocusOffsetTarget = new_distance * camera_offset_unit;
@@ -1951,40 +1965,41 @@ void LLAgent::cameraOrbitIn(const F32 meters)
1951 LLVector3d camera_offset_unit(mCameraFocusOffsetTarget); 1965 LLVector3d camera_offset_unit(mCameraFocusOffsetTarget);
1952 F32 current_distance = (F32)camera_offset_unit.normalize(); 1966 F32 current_distance = (F32)camera_offset_unit.normalize();
1953 F32 new_distance = current_distance - meters; 1967 F32 new_distance = current_distance - meters;
1954 F32 min_zoom = LAND_MIN_ZOOM; 1968
1955 1969 // Don't zoom too far back
1956 // Don't move through focus point 1970 // Actually, let's when disable camera constraints is active -- McCabe
1957 if (mFocusObject.notNull()) 1971 if (!gSavedSettings.getBOOL("DisableCameraConstraints"))
1958 { 1972 {
1959 if (mFocusObject->isAvatar()) 1973 F32 min_zoom = LAND_MIN_ZOOM;
1960 { 1974 F32 max_distance;
1961 min_zoom = AVATAR_MIN_ZOOM; 1975
1962 } 1976 // Don't move through focus point
1963 else 1977 if (mFocusObject.notNull())
1964 { 1978 {
1965 min_zoom = OBJECT_MIN_ZOOM; 1979 if (mFocusObject->isAvatar())
1980 {
1981 min_zoom = AVATAR_MIN_ZOOM;
1982 }
1983 else
1984 {
1985 min_zoom = OBJECT_MIN_ZOOM;
1986 }
1966 } 1987 }
1967 }
1968 1988
1969 new_distance = llmax(new_distance, min_zoom); 1989 new_distance = llmax(new_distance, min_zoom);
1970 1990
1971 // Don't zoom too far back 1991 max_distance = llmin(mDrawDistance - DIST_FUDGE,
1972 const F32 DIST_FUDGE = 16.f; // meters 1992 LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE );
1973 F32 max_distance = llmin(mDrawDistance - DIST_FUDGE,
1974 LLWorld::getInstance()->getRegionWidthInMeters() - DIST_FUDGE );
1975 1993
1976 if (new_distance > max_distance) 1994 if (new_distance > max_distance)
1977 {
1978 // Unless camera is unlocked
1979 if (!gSavedSettings.getBOOL("DisableCameraConstraints"))
1980 { 1995 {
1981 return; 1996 return;
1982 } 1997 }
1983 }
1984 1998
1985 if( CAMERA_MODE_CUSTOMIZE_AVATAR == getCameraMode() ) 1999 if( CAMERA_MODE_CUSTOMIZE_AVATAR == getCameraMode() )
1986 { 2000 {
1987 new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM ); 2001 new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM );
2002 }
1988 } 2003 }
1989 2004
1990 // Compute new camera offset 2005 // Compute new camera offset