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