diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 3b81192f9..5cd4c780e 100644 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -2023,13 +2023,21 @@ LLVector3 LLAgentCamera::getCameraOffsetInitial() } // Adds change to vector CachedControl, vec, at idx -template +template void change_vec(const T& change, LLCachedControl& vec, const U32& idx = VZ) { Vec changed(vec); changed[idx] += change; vec = changed; } +// Same as above, but for ControlVariables +template +void change_vec(const T& change, LLPointer& vec, const U32& idx = VZ) +{ + Vec changed(vec->get()); + changed[idx] += change; + vec->set(changed.getValue()); +} //----------------------------------------------------------------------------- // handleScrollWheel() @@ -2072,13 +2080,11 @@ void LLAgentCamera::handleScrollWheel(S32 clicks) const F32 change(static_cast(clicks) * 0.1f); if (mask & MASK_SHIFT) { - static LLCachedControl focus_offset("FocusOffsetRearView"); - change_vec(change, focus_offset); + change_vec(change, mFocusOffsetInitial[mCameraPreset]); } if (mask & MASK_CONTROL) { - static LLCachedControl camera_offset("CameraOffsetRearView"); - change_vec(change, camera_offset); + change_vec(change, mCameraOffsetInitial[mCameraPreset]); } return; }