2023-05-08 15:56:10 +03:00

47 lines
1.2 KiB
C#

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;
}
}