SL-18399 'DisableCameraConstraints' debug setting is not working on RC
parent
bfc9772d61
commit
2531144643
|
|
@ -100,6 +100,12 @@ const F32 GROUND_TO_AIR_CAMERA_TRANSITION_START_TIME = 0.5f;
|
|||
|
||||
const F32 OBJECT_EXTENTS_PADDING = 0.5f;
|
||||
|
||||
static bool isDisableCameraConstraints()
|
||||
{
|
||||
static LLCachedControl<bool> sDisableCameraConstraints(gSavedSettings, "DisableCameraConstraints", false);
|
||||
return sDisableCameraConstraints;
|
||||
}
|
||||
|
||||
// The agent instance.
|
||||
LLAgentCamera gAgentCamera;
|
||||
|
||||
|
|
@ -565,9 +571,9 @@ BOOL LLAgentCamera::calcCameraMinDistance(F32 &obj_min_distance)
|
|||
{
|
||||
BOOL soft_limit = FALSE; // is the bounding box to be treated literally (volumes) or as an approximation (avatars)
|
||||
|
||||
if (!mFocusObject || mFocusObject->isDead() ||
|
||||
if (!mFocusObject || mFocusObject->isDead() ||
|
||||
mFocusObject->isMesh() ||
|
||||
gSavedSettings.getBOOL("DisableCameraConstraints"))
|
||||
isDisableCameraConstraints())
|
||||
{
|
||||
obj_min_distance = 0.f;
|
||||
return TRUE;
|
||||
|
|
@ -737,39 +743,44 @@ F32 LLAgentCamera::getCameraZoomFraction(bool get_third_person)
|
|||
// already [0,1]
|
||||
return mHUDTargetZoom;
|
||||
}
|
||||
else if (get_third_person || (mFocusOnAvatar && cameraThirdPerson()))
|
||||
|
||||
if (isDisableCameraConstraints())
|
||||
{
|
||||
return mCameraZoomFraction;
|
||||
}
|
||||
|
||||
if (get_third_person || (mFocusOnAvatar && cameraThirdPerson()))
|
||||
{
|
||||
return clamp_rescale(mCameraZoomFraction, MIN_ZOOM_FRACTION, MAX_ZOOM_FRACTION, 1.f, 0.f);
|
||||
}
|
||||
else if (cameraCustomizeAvatar())
|
||||
|
||||
if (cameraCustomizeAvatar())
|
||||
{
|
||||
F32 distance = (F32)mCameraFocusOffsetTarget.magVec();
|
||||
return clamp_rescale(distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM, 1.f, 0.f );
|
||||
}
|
||||
else
|
||||
{
|
||||
F32 min_zoom;
|
||||
F32 max_zoom = getCameraMaxZoomDistance();
|
||||
|
||||
F32 distance = (F32)mCameraFocusOffsetTarget.magVec();
|
||||
if (mFocusObject.notNull())
|
||||
F32 min_zoom;
|
||||
F32 max_zoom = getCameraMaxZoomDistance();
|
||||
|
||||
F32 distance = (F32)mCameraFocusOffsetTarget.magVec();
|
||||
if (mFocusObject.notNull())
|
||||
{
|
||||
if (mFocusObject->isAvatar())
|
||||
{
|
||||
if (mFocusObject->isAvatar())
|
||||
{
|
||||
min_zoom = AVATAR_MIN_ZOOM;
|
||||
}
|
||||
else
|
||||
{
|
||||
min_zoom = OBJECT_MIN_ZOOM;
|
||||
}
|
||||
min_zoom = AVATAR_MIN_ZOOM;
|
||||
}
|
||||
else
|
||||
{
|
||||
min_zoom = LAND_MIN_ZOOM;
|
||||
min_zoom = OBJECT_MIN_ZOOM;
|
||||
}
|
||||
|
||||
return clamp_rescale(distance, min_zoom, max_zoom, 1.f, 0.f);
|
||||
}
|
||||
else
|
||||
{
|
||||
min_zoom = LAND_MIN_ZOOM;
|
||||
}
|
||||
|
||||
return clamp_rescale(distance, min_zoom, max_zoom, 1.f, 0.f);
|
||||
}
|
||||
|
||||
void LLAgentCamera::setCameraZoomFraction(F32 fraction)
|
||||
|
|
@ -782,6 +793,10 @@ void LLAgentCamera::setCameraZoomFraction(F32 fraction)
|
|||
{
|
||||
mHUDTargetZoom = fraction;
|
||||
}
|
||||
else if (isDisableCameraConstraints())
|
||||
{
|
||||
mCameraZoomFraction = fraction;
|
||||
}
|
||||
else if (mFocusOnAvatar && cameraThirdPerson())
|
||||
{
|
||||
mCameraZoomFraction = rescale(fraction, 0.f, 1.f, MAX_ZOOM_FRACTION, MIN_ZOOM_FRACTION);
|
||||
|
|
@ -816,6 +831,7 @@ void LLAgentCamera::setCameraZoomFraction(F32 fraction)
|
|||
camera_offset_dir.normalize();
|
||||
mCameraFocusOffsetTarget = camera_offset_dir * rescale(fraction, 0.f, 1.f, max_zoom, min_zoom);
|
||||
}
|
||||
|
||||
startCameraAnimation();
|
||||
}
|
||||
|
||||
|
|
@ -920,51 +936,42 @@ void LLAgentCamera::cameraZoomIn(const F32 fraction)
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
LLVector3d camera_offset_unit(mCameraFocusOffsetTarget);
|
||||
F32 min_zoom = LAND_MIN_ZOOM;
|
||||
LLVector3d camera_offset_unit(mCameraFocusOffsetTarget);
|
||||
F32 current_distance = (F32)camera_offset_unit.normalize();
|
||||
F32 new_distance = current_distance * fraction;
|
||||
|
||||
// Don't move through focus point
|
||||
if (mFocusObject)
|
||||
// Unless camera is unlocked
|
||||
if (!isDisableCameraConstraints())
|
||||
{
|
||||
LLVector3 camera_offset_dir((F32)camera_offset_unit.mdV[VX], (F32)camera_offset_unit.mdV[VY], (F32)camera_offset_unit.mdV[VZ]);
|
||||
F32 min_zoom = LAND_MIN_ZOOM;
|
||||
|
||||
if (mFocusObject->isAvatar())
|
||||
// Don't move through focus point
|
||||
if (mFocusObject)
|
||||
{
|
||||
calcCameraMinDistance(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;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
new_distance = llmax(new_distance, min_zoom);
|
||||
|
||||
F32 max_distance = getCameraMaxZoomDistance();
|
||||
max_distance = llmin(max_distance, current_distance * 4.f); //Scaled max relative to current distance. MAINT-3154
|
||||
new_distance = llmin(new_distance, max_distance);
|
||||
|
||||
if (cameraCustomizeAvatar())
|
||||
{
|
||||
min_zoom = OBJECT_MIN_ZOOM;
|
||||
new_distance = llclamp(new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM);
|
||||
}
|
||||
}
|
||||
|
||||
new_distance = llmax(new_distance, min_zoom);
|
||||
|
||||
F32 max_distance = getCameraMaxZoomDistance();
|
||||
|
||||
max_distance = llmin(max_distance, current_distance * 4.f); //Scaled max relative to current distance. MAINT-3154
|
||||
|
||||
if (new_distance > max_distance)
|
||||
{
|
||||
new_distance = max_distance;
|
||||
|
||||
/*
|
||||
// Unless camera is unlocked
|
||||
if (!LLViewerCamera::sDisableCameraConstraints)
|
||||
{
|
||||
return;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
if(cameraCustomizeAvatar())
|
||||
{
|
||||
new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM );
|
||||
}
|
||||
|
||||
mCameraFocusOffsetTarget = new_distance * camera_offset_unit;
|
||||
}
|
||||
|
||||
|
|
@ -985,53 +992,52 @@ void LLAgentCamera::cameraOrbitIn(const F32 meters)
|
|||
changeCameraToMouselook(FALSE);
|
||||
}
|
||||
|
||||
mCameraZoomFraction = llclamp(mCameraZoomFraction, MIN_ZOOM_FRACTION, MAX_ZOOM_FRACTION);
|
||||
if (!isDisableCameraConstraints())
|
||||
{
|
||||
mCameraZoomFraction = llclamp(mCameraZoomFraction, MIN_ZOOM_FRACTION, MAX_ZOOM_FRACTION);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LLVector3d camera_offset_unit(mCameraFocusOffsetTarget);
|
||||
F32 current_distance = (F32)camera_offset_unit.normalize();
|
||||
F32 new_distance = current_distance - meters;
|
||||
F32 min_zoom = LAND_MIN_ZOOM;
|
||||
|
||||
// Don't move through focus point
|
||||
if (mFocusObject.notNull())
|
||||
|
||||
// Unless camera is unlocked
|
||||
if (!isDisableCameraConstraints())
|
||||
{
|
||||
if (mFocusObject->isAvatar())
|
||||
F32 min_zoom = LAND_MIN_ZOOM;
|
||||
|
||||
// Don't move through focus point
|
||||
if (mFocusObject.notNull())
|
||||
{
|
||||
min_zoom = AVATAR_MIN_ZOOM;
|
||||
if (mFocusObject->isAvatar())
|
||||
{
|
||||
min_zoom = AVATAR_MIN_ZOOM;
|
||||
}
|
||||
else
|
||||
{
|
||||
min_zoom = OBJECT_MIN_ZOOM;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
new_distance = llmax(new_distance, min_zoom);
|
||||
|
||||
F32 max_distance = getCameraMaxZoomDistance();
|
||||
new_distance = llmin(new_distance, max_distance);
|
||||
|
||||
if (CAMERA_MODE_CUSTOMIZE_AVATAR == getCameraMode())
|
||||
{
|
||||
min_zoom = OBJECT_MIN_ZOOM;
|
||||
new_distance = llclamp(new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM);
|
||||
}
|
||||
}
|
||||
|
||||
new_distance = llmax(new_distance, min_zoom);
|
||||
|
||||
F32 max_distance = getCameraMaxZoomDistance();
|
||||
|
||||
if (new_distance > max_distance)
|
||||
{
|
||||
// Unless camera is unlocked
|
||||
if (!gSavedSettings.getBOOL("DisableCameraConstraints"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if( CAMERA_MODE_CUSTOMIZE_AVATAR == getCameraMode() )
|
||||
{
|
||||
new_distance = llclamp( new_distance, APPEARANCE_MIN_ZOOM, APPEARANCE_MAX_ZOOM );
|
||||
}
|
||||
|
||||
// Compute new camera offset
|
||||
mCameraFocusOffsetTarget = new_distance * camera_offset_unit;
|
||||
cameraZoomIn(1.f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// cameraPanIn()
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -1823,7 +1829,8 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
|||
local_camera_offset = gAgent.getFrameAgent().rotateToAbsolute( local_camera_offset );
|
||||
}
|
||||
|
||||
if (!mCameraCollidePlane.isExactlyZero() && (!isAgentAvatarValid() || !gAgentAvatarp->isSitting()))
|
||||
if (!isDisableCameraConstraints() && !mCameraCollidePlane.isExactlyZero() &&
|
||||
(!isAgentAvatarValid() || !gAgentAvatarp->isSitting()))
|
||||
{
|
||||
LLVector3 plane_normal;
|
||||
plane_normal.setVec(mCameraCollidePlane.mV);
|
||||
|
|
@ -1942,7 +1949,7 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
|
|||
camera_position_global = focusPosGlobal + mCameraFocusOffset;
|
||||
}
|
||||
|
||||
if (!gSavedSettings.getBOOL("DisableCameraConstraints") && !gAgent.isGodlike())
|
||||
if (!isDisableCameraConstraints() && !gAgent.isGodlike())
|
||||
{
|
||||
LLViewerRegion* regionp = LLWorld::getInstance()->getRegionFromPosGlobal(camera_position_global);
|
||||
bool constrain = true;
|
||||
|
|
@ -2106,17 +2113,13 @@ F32 LLAgentCamera::getCameraMinOffGround()
|
|||
{
|
||||
return 0.f;
|
||||
}
|
||||
else
|
||||
|
||||
if (isDisableCameraConstraints())
|
||||
{
|
||||
if (gSavedSettings.getBOOL("DisableCameraConstraints"))
|
||||
{
|
||||
return -1000.f;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0.5f;
|
||||
}
|
||||
return -1000.f;
|
||||
}
|
||||
|
||||
return 0.5f;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue