diff options
Diffstat (limited to 'linden/indra/newview/llagent.cpp')
-rw-r--r-- | linden/indra/newview/llagent.cpp | 107 |
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; | |||
187 | const F32 APPEARANCE_MIN_ZOOM = 0.39f; | 187 | const F32 APPEARANCE_MIN_ZOOM = 0.39f; |
188 | const F32 APPEARANCE_MAX_ZOOM = 8.f; | 188 | const F32 APPEARANCE_MAX_ZOOM = 8.f; |
189 | 189 | ||
190 | const F32 DIST_FUDGE = 16.f; // meters | ||
191 | |||
190 | // fidget constants | 192 | // fidget constants |
191 | const F32 MIN_FIDGET_TIME = 8.f; // seconds | 193 | const F32 MIN_FIDGET_TIME = 8.f; // seconds |
192 | const F32 MAX_FIDGET_TIME = 20.f; // seconds | 194 | const 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 |