diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index a8e0a5c2a..af8bad3d6 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -2272,6 +2272,7 @@ void LLAgentCamera::changeCameraToFollow(BOOL animate) if (mCameraMode == CAMERA_MODE_MOUSELOOK) { animate = FALSE; + if (gViewerWindow->getRightMouseDown()) LLViewerCamera::instance().loadDefaultFOV(); // We could be zoomed in } startCameraAnimation(); @@ -2361,6 +2362,7 @@ void LLAgentCamera::changeCameraToThirdPerson(BOOL animate) mCurrentCameraDistance = MIN_CAMERA_DISTANCE; mTargetCameraDistance = MIN_CAMERA_DISTANCE; animate = FALSE; + if (gViewerWindow->getRightMouseDown()) LLViewerCamera::instance().loadDefaultFOV(); // We could be zoomed in } updateLastCamera(); mCameraMode = CAMERA_MODE_THIRD_PERSON; diff --git a/indra/newview/lltoolcomp.cpp b/indra/newview/lltoolcomp.cpp index 44c8c4a0e..85cc032a3 100644 --- a/indra/newview/lltoolcomp.cpp +++ b/indra/newview/lltoolcomp.cpp @@ -638,7 +638,7 @@ void LLToolCompRotate::render() LLToolCompGun::LLToolCompGun() : LLToolComposite(std::string("Mouselook")) - , mRightMouseButton(false), mMenuShown(false), mTimerFOV(), mOriginalFOV(), mStartFOV(), mTargetFOV() // + , mMenuShown(false), mTimerFOV(), mOriginalFOV(), mStartFOV(), mTargetFOV() // { mGun = new LLToolGun(this); mGrab = new LLToolGrab(this); @@ -764,10 +764,9 @@ void LLToolCompGun::handleSelect() void LLToolCompGun::handleDeselect() { LLToolComposite::handleDeselect(); - if (mRightMouseButton || mTimerFOV.getStarted()) // Singu Note: Load Default FOV if we were zoomed in + if (mTimerFOV.getStarted()) // Note: Load Default FOV if we were zooming in { LLViewerCamera::getInstance()->loadDefaultFOV(); - mRightMouseButton = false; } setMouseCapture(FALSE); } @@ -777,22 +776,18 @@ void LLToolCompGun::handleDeselect() BOOL LLToolCompGun::handleRightMouseUp(S32 x, S32 y, MASK mask) { // Singu Note: Beware the alt-click menu - if (mRightMouseButton) - { - mRightMouseButton = false; - - mStartFOV = LLViewerCamera::getInstance()->getDefaultFOV(); - mTargetFOV = mOriginalFOV; - gSavedSettings.getBOOL("LiruMouselookInstantZoom") ? LLViewerCamera::getInstance()->setDefaultFOV(mTargetFOV) : - mTimerFOV.start(); - } - if (mMenuShown) { mMenuShown = false; return LLToolComposite::handleRightMouseUp(x, y, mask); } + LLViewerCamera& cam(LLViewerCamera::instance()); + mStartFOV = cam.getDefaultFOV(); + mTargetFOV = mOriginalFOV; + gSavedSettings.getBOOL("LiruMouselookInstantZoom") ? cam.setDefaultFOV(mTargetFOV) : mTimerFOV.start(); + cam.mSavedFOVLoaded = false; + return TRUE; } @@ -805,27 +800,27 @@ BOOL LLToolCompGun::handleRightMouseDown(S32 x, S32 y, MASK mask) return false; } - mRightMouseButton = true; - - if(!mTimerFOV.getStarted()) + LLViewerCamera& cam(LLViewerCamera::instance()); + if (!mTimerFOV.getStarted()) { - mStartFOV = LLViewerCamera::getInstance()->getAndSaveDefaultFOV(); + mStartFOV = cam.getAndSaveDefaultFOV(); mOriginalFOV = mStartFOV; } - else mStartFOV = LLViewerCamera::getInstance()->getDefaultFOV(); + else mStartFOV = cam.getDefaultFOV(); mTargetFOV = gSavedSettings.getF32("ExodusAlternativeFOV"); - gSavedSettings.getBOOL("LiruMouselookInstantZoom") ? LLViewerCamera::getInstance()->setDefaultFOV(mTargetFOV) : - mTimerFOV.start(); + gSavedSettings.getBOOL("LiruMouselookInstantZoom") ? cam.setDefaultFOV(mTargetFOV) : mTimerFOV.start(); + cam.mSavedFOVLoaded = false; return TRUE; } BOOL LLToolCompGun::handleScrollWheel(S32 x, S32 y, S32 clicks) { - if (mRightMouseButton) + if (gViewerWindow->getRightMouseDown()) { - mStartFOV = LLViewerCamera::getInstance()->getDefaultFOV(); + LLViewerCamera& cam(LLViewerCamera::instance()); + mStartFOV = cam.getDefaultFOV(); gSavedSettings.setF32( "ExodusAlternativeFOV", @@ -834,8 +829,8 @@ BOOL LLToolCompGun::handleScrollWheel(S32 x, S32 y, S32 clicks) llclamp(mTargetFOV -= (0.05f * -clicks), 0.1f, 3.0f) ); - gSavedSettings.getBOOL("LiruMouselookInstantZoom") ? LLViewerCamera::getInstance()->setDefaultFOV(mTargetFOV) : - mTimerFOV.start(); + gSavedSettings.getBOOL("LiruMouselookInstantZoom") ? cam.setDefaultFOV(mTargetFOV) : mTimerFOV.start(); + cam.mSavedFOVLoaded = false; } else if (clicks > 0) gAgentCamera.changeCameraToDefault(); @@ -848,16 +843,17 @@ void LLToolCompGun::draw() { if (mTimerFOV.getStarted()) { - if (!LLViewerCamera::getInstance()->mSavedFOVLoaded && mStartFOV != mTargetFOV) + LLViewerCamera& cam(LLViewerCamera::instance()); + if (!cam.mSavedFOVLoaded && mStartFOV != mTargetFOV) { F32 timer = mTimerFOV.getElapsedTimeF32(); if (timer > 0.15f) { - LLViewerCamera::getInstance()->setDefaultFOV(mTargetFOV); + cam.setDefaultFOV(mTargetFOV); mTimerFOV.stop(); } - else LLViewerCamera::getInstance()->setDefaultFOV(lerp(mStartFOV, mTargetFOV, timer * 6.66f)); + else cam.setDefaultFOV(lerp(mStartFOV, mTargetFOV, timer * 6.66f)); } else mTimerFOV.stop(); } diff --git a/indra/newview/lltoolcomp.h b/indra/newview/lltoolcomp.h index 07cf2815b..c1169f0ec 100644 --- a/indra/newview/lltoolcomp.h +++ b/indra/newview/lltoolcomp.h @@ -235,7 +235,7 @@ protected: // private: - bool mRightMouseButton, mMenuShown; + bool mMenuShown; LLTimer mTimerFOV; F32 mOriginalFOV, mStartFOV, mTargetFOV; // diff --git a/indra/newview/lltoolfocus.cpp b/indra/newview/lltoolfocus.cpp index 0065a7f28..2cdfd172a 100644 --- a/indra/newview/lltoolfocus.cpp +++ b/indra/newview/lltoolfocus.cpp @@ -313,11 +313,9 @@ BOOL LLToolCamera::handleMouseUp(S32 x, S32 y, MASK mask) return TRUE; } -static bool right_hold_mouse_walk=false; - BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask) { - if(right_hold_mouse_walk) + if (gViewerWindow->getRightMouseDown()) { agent_push_forward(KEYSTATE_LEVEL); } @@ -461,7 +459,6 @@ BOOL LLToolCamera::handleRightMouseDown(S32 x, S32 y, MASK mask) if(mMouseSteering) { agent_push_forward(KEYSTATE_DOWN); - right_hold_mouse_walk = true; return TRUE; } else @@ -472,10 +469,9 @@ BOOL LLToolCamera::handleRightMouseDown(S32 x, S32 y, MASK mask) BOOL LLToolCamera::handleRightMouseUp(S32 x, S32 y, MASK mask) { - if(mMouseSteering || right_hold_mouse_walk) + if (mMouseSteering) { agent_push_forward(KEYSTATE_UP); - right_hold_mouse_walk = false; return TRUE; } else @@ -487,5 +483,5 @@ BOOL LLToolCamera::handleRightMouseUp(S32 x, S32 y, MASK mask) void LLToolCamera::onMouseCaptureLost() { releaseMouse(); - handleRightMouseUp(0,0,0); + if (gViewerWindow->getRightMouseDown()) agent_push_forward(KEYSTATE_UP); } diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp index 041e804e7..3247d6884 100644 --- a/indra/newview/llviewercamera.cpp +++ b/indra/newview/llviewercamera.cpp @@ -751,6 +751,7 @@ void LLViewerCamera::setDefaultFOV(F32 vertical_fov_rads) // void LLViewerCamera::loadDefaultFOV() { + if (mSavedFOVLoaded) return; setView(mSavedFOVDefault); mSavedFOVLoaded = true; mCameraFOVDefault = mSavedFOVDefault;