private static CameraTransform UpdateCameraTransform(CameraInput input, Vector3 targetPosition, Quaternion baseRotation)
        {
            var dir           = new Vector3(0, 0, -input.Distance);
            var orbitRotation = baseRotation * Quaternion.Euler(input.Y, input.X, 0);
            var position      = targetPosition + TargetOffset + orbitRotation * dir;
            var rotation      = Quaternion.LookRotation(targetPosition + TargetOffset - position);

            return(new CameraTransform
            {
                Position = position,
                Rotation = rotation
            });
        }
        private static CameraInput UpdateCameraInput(CameraInput input)
        {
            var x        = input.X;        //+ InputUtils.CameraX;
            var y        = input.Y - InputUtils.CameraY;
            var distance = input.Distance; // + Input.GetAxis("Mouse ScrollWheel") * ZoomScale;

            x       %= 360;
            y        = Mathf.Clamp(y, MinYAngle, MaxYAngle);
            distance = Mathf.Clamp(distance, MinCameraDistance, MaxCameraDistance);

            return(new CameraInput
            {
                X = x,
                Y = y,
                Distance = distance
            });
        }