using UnityEngine;

[ExecuteInEditMode]
public class StringRenderer : MonoBehaviour
{
    [Header("Render Positions")] [SerializeField]
    private Transform start;

    [SerializeField] private Transform middle;
    [SerializeField] private Transform end;

    private LineRenderer _lineRenderer;

    private void Awake()
    {
        _lineRenderer = GetComponent<LineRenderer>();
    }

    private void Update()
    {
        // While in editor, make sure the line renderer follows bow
        if (Application.isEditor && !Application.isPlaying)
            UpdatePositions();
    }

    private void OnEnable()
    {
        Application.onBeforeRender += UpdatePositions;
    }

    private void OnDisable()
    {
        Application.onBeforeRender -= UpdatePositions;
    }

    private void UpdatePositions()
    {
        if (_lineRenderer == null) _lineRenderer = GetComponent<LineRenderer>();
        // Set positions of line renderer, middle position is the notch attach transform
        _lineRenderer.SetPositions(new Vector3[] { start.position, middle.position, end.position });
    }

    public void UpdateString(Vector3 pullPosition)
    {
        middle.position = pullPosition;
    }
}