47 lines
1.2 KiB
C#
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;
|
|
}
|
|
} |