using UnityEngine;
namespace Unheimlich.Data.CameraSettings
{
///
/// Head bob mode for camera pan.
///
public enum HeadBobMode
{
Normal,
Idle,
Disabled
}
///
/// ScriptableObject configuration for camera pan and player alignment behavior.
/// Defines pan speed, borders, angles, alignment parameters, and lerp smoothness.
///
[CreateAssetMenu(fileName = "CameraPanSettings", menuName = "Unheimlich/Camera/Camera Pan Settings")]
public class CameraPanSettings : ScriptableObject
{
[Header("Camera Pan")]
[Tooltip("Camera pan speed when moving the cursor/look stick")]
public float PanSpeed = 2f;
[Tooltip("Size of the border area for mouse pan (0-1, screen percentage)")]
[Range(0f, 0.5f)]
public float PanBorderSize = 0.1f;
[Tooltip("Maximum angle the camera can pan from center")]
public float MaxPanAngle = 15f;
[Header("Recentering")]
[Tooltip("Enable automatic return to center when idle")]
public bool EnableRecentering = true;
[Tooltip("Speed of automatic recentering (higher = faster return to center)")]
public float RecenterSpeed = 2f;
[Tooltip("Delay before recentering starts (in seconds)")]
public float RecenterDelay = 0.1f;
[Header("Player Alignment")]
[Tooltip("Speed of player/camera alignment to target")]
public float AlignmentSpeed = 3f;
[Tooltip("Threshold for alignment completion")]
public float AlignmentThreshold = 0.5f;
[Header("Head Bob Control")]
[Tooltip("Head bob mode: Normal (default behavior), Idle (force subtle breathing), Disabled (no movement)")]
public HeadBobMode HeadBobMode = HeadBobMode.Idle;
[Header("Lerp Smoothing")]
[Tooltip("Use SmoothStep for smoother interpolation (true) or linear lerp (false)")]
public bool UseSmoothStep = true;
[Tooltip("Custom animation curve for alignment (overrides SmoothStep if set)")]
public AnimationCurve AlignmentCurve = null;
}
}