Feature request by StephiDreamEvermore Doune: Implement the convenience of being able to set view offsets while modifier keys are held during scroll in third person camera (Play with camera position/angle)

This commit is contained in:
Inusaito Sayori
2013-10-19 20:54:02 -04:00
parent bd4e988397
commit a33efc61a2

View File

@@ -2022,6 +2022,14 @@ LLVector3 LLAgentCamera::getCameraOffsetInitial()
return convert_from_llsd<LLVector3>(mCameraOffsetInitial[mCameraPreset]->get(), TYPE_VEC3, "");
}
// Adds change to vector CachedControl, vec, at idx
template <typename T, typename Vec>
void change_vec(const T& change, LLCachedControl<Vec>& vec, const U32& idx = VZ)
{
Vec changed(vec);
changed[idx] += change;
vec = changed;
}
//-----------------------------------------------------------------------------
// handleScrollWheel()
@@ -2057,6 +2065,24 @@ void LLAgentCamera::handleScrollWheel(S32 clicks)
}
else if (mFocusOnAvatar && (mCameraMode == CAMERA_MODE_THIRD_PERSON))
{
if (MASK mask = gKeyboard->currentMask(true)) // Singu Note: Conveniently set view offsets while modifier keys are held during scroll
{
if (mask & MASK_CONTROL|MASK_SHIFT)
{
const F32 change(static_cast<F32>(clicks) * 0.1f);
if (mask & MASK_SHIFT)
{
static LLCachedControl<LLVector3d> focus_offset("FocusOffsetRearView");
change_vec(change, focus_offset);
}
if (mask & MASK_CONTROL)
{
static LLCachedControl<LLVector3> camera_offset("CameraOffsetRearView");
change_vec(change, camera_offset);
}
return;
}
}
F32 camera_offset_initial_mag = getCameraOffsetInitial().magVec();
static const LLCachedControl<F32> camera_offset_scale("CameraOffsetScale");