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:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user