Fix mouselook zoom

master
Zi Ree 2024-06-18 15:45:13 +02:00
parent 64cb25cb5f
commit 1d5976fdeb
3 changed files with 34 additions and 2 deletions

View File

@ -98,12 +98,18 @@ LLViewerCamera::LLViewerCamera() : LLCamera()
mAverageSpeed = 0.f;
mAverageAngularSpeed = 0.f;
mCameraAngleChangedSignal = gSavedSettings.getControl("CameraAngle")->getCommitSignal()->connect(boost::bind(&LLViewerCamera::updateCameraAngle, this, _2));
// <FS:Zi> add a way to disconnect/reconnect the "CameraAngle" changed signal
// mCameraAngleChangedSignal = gSavedSettings.getControl("CameraAngle")->getCommitSignal()->connect(boost::bind(&LLViewerCamera::updateCameraAngle, this, _2));
connectCameraAngleSignal();
// </FS:Zi>
}
LLViewerCamera::~LLViewerCamera()
{
mCameraAngleChangedSignal.disconnect();
// <FS:Zi> add a way to disconnect/reconnect the "CameraAngle" changed signal
// mCameraAngleChangedSignal.disconnect();
disconnectCameraAngleSignal();
// </FS:Zi>
}
void LLViewerCamera::updateCameraLocation(const LLVector3 &center, const LLVector3 &up_direction, const LLVector3 &point_of_interest)
@ -920,3 +926,19 @@ void LLViewerCamera::updateCameraAngle(const LLSD& value)
setDefaultFOV(value.asReal());
}
// <FS:Zi> add a way to disconnect/reconnect the "CameraAngle" changed signal
void LLViewerCamera::connectCameraAngleSignal()
{
if (mCameraAngleChangedSignal.connected())
{
mCameraAngleChangedSignal.disconnect();
}
mCameraAngleChangedSignal = gSavedSettings.getControl("CameraAngle")->getCommitSignal()->connect(boost::bind(&LLViewerCamera::updateCameraAngle, this, _2));
}
void LLViewerCamera::disconnectCameraAngleSignal()
{
mCameraAngleChangedSignal.disconnect();
}
// </FS:Zi>

View File

@ -129,6 +129,12 @@ protected:
boost::signals2::connection mCameraAngleChangedSignal;
public:
// <FS:Zi> Enable external classes to disconnect and connect the "CameraAngle" settings
// changed signal, so classes can copy and overwrite the camera class and restore
// the signal handler
void connectCameraAngleSignal();
void disconnectCameraAngleSignal();
// </FS:Zi>
};

View File

@ -6549,6 +6549,8 @@ BOOL LLViewerWindow::cubeSnapshot(const LLVector3& origin, LLCubeMapArray* cubea
glh::matrix4f saved_proj = get_current_projection();
glh::matrix4f saved_mod = get_current_modelview();
camera->disconnectCameraAngleSignal(); // <FS:Zi> disconnect the "CameraAngle" changed signal
// camera constants for the square, cube map capture image
camera->setAspect(1.0); // must set aspect ratio first to avoid undesirable clamping of vertical FoV
camera->setViewNoBroadcast(F_PI_BY_TWO);
@ -6683,6 +6685,8 @@ BOOL LLViewerWindow::cubeSnapshot(const LLVector3& origin, LLCubeMapArray* cubea
setup3DViewport();
LLPipeline::sUseOcclusion = old_occlusion;
camera->connectCameraAngleSignal(); // <FS:Zi> reconnect the "CameraAngle" changed signal so mouselook zoom keeps working
// ====================================================
return true;
}