using System; using UnityEngine; using UnityEngine.Serialization; [RequireComponent(typeof(LineRenderer))] [ExecuteAlways] public class LineBetweenTransforms : MonoBehaviour { [SerializeField] [FormerlySerializedAs("transformNodes")] [Tooltip("The list of transforms whose positions will drive the vertex positions of the sibling LineRenderer component.")] private Transform[] _transformNodes = Array.Empty(); private LineRenderer lineRenderer; private Vector3[] vertexList = Array.Empty(); public Transform[] transformNodes { get { return _transformNodes; } set { if (value == null) { throw new ArgumentNullException("value"); } _transformNodes = value; UpdateVertexBufferSize(); } } private void PushPositionsToLineRenderer() { Vector3[] array = vertexList; Transform[] array2 = transformNodes; for (int i = 0; i < array.Length; i++) { Transform transform = array2[i]; if ((bool)transform) { array[i] = transform.position; } } lineRenderer.SetPositions(array); } private void UpdateVertexBufferSize() { Array.Resize(ref vertexList, transformNodes.Length); } private void Awake() { lineRenderer = GetComponent(); UpdateVertexBufferSize(); } private void LateUpdate() { PushPositionsToLineRenderer(); } }