local function R(R)return Vector2.new(math.clamp(math.sign(R.X)*fromSCurveSpace(SCurveTransform(toSCurveSpace(math.abs(R.X)))),-1,1),math.clamp(math.sign(R.Y)*fromSCurveSpace(SCurveTransform(toSCurveSpace(math.abs(R.Y)))),-1,1))end
-- Applies a nonlinear transform to the thumbstick position to serve as the acceleration for camera rotation.
-- See https://www.desmos.com/calculator/xw2ytjpzco for a visual reference.
local function gamepadLinearToCurve(thumbstickPosition)
	return Vector2.new(
		math.clamp(
			math.sign(thumbstickPosition.X)
				* fromSCurveSpace(SCurveTransform(toSCurveSpace(math.abs(thumbstickPosition.X)))),
			-1,
			1
		),
		math.clamp(
			math.sign(thumbstickPosition.Y)
				* fromSCurveSpace(SCurveTransform(toSCurveSpace(math.abs(thumbstickPosition.Y)))),
			-1,
			1
		)
	)
end
