using UnityEngine;

namespace Woop.Unity
{
    [DisallowMultipleComponent]
    [RequireComponent(typeof(Camera))]
    public sealed class WoopCameraFollow2D : MonoBehaviour
    {
        [SerializeField] private Transform target;
        [SerializeField, Min(0f)] private float smoothTime = 0.18f;

        private Vector3 velocity;

        public void Configure(Transform followTarget, float smoothing = 0.18f)
        {
            target = followTarget;
            smoothTime = Mathf.Max(0f, smoothing);
        }

        private void LateUpdate()
        {
            if (target == null)
                return;

            Vector3 desired = new Vector3(target.position.x, target.position.y, transform.position.z);
            transform.position = smoothTime <= 0f
                ? desired
                : Vector3.SmoothDamp(transform.position, desired, ref velocity, smoothTime);
        }
    }
}
