Fix mouselook zoom
parent
64cb25cb5f
commit
1d5976fdeb
|
|
@ -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 ¢er, 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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue