private void UpdateVertices() { Points.Clear(); if (!TransformPairs.Any()) { Points.Add(Vector2.zero); Points.Add(Vector2.zero); } else { var parentPos = RectTransform.position; var parentSize = RectTransform.sizeDelta; parentSize = new Vector2(1f / parentSize.x, 1f / parentSize.y); for (int i = 0; i < TransformPairs.Count; ++i) { var pair = TransformPairs[i]; var posA = pair.A.position - parentPos; var start = new Vector2(posA.x * parentSize.x, posA.y * parentSize.y); var posB = pair.B.position - parentPos; var end = new Vector2(posB.x * parentSize.x, posB.y * parentSize.y); Points.Add(start); Points.Add(end); } } LineRenderer.Points = Points.ToArray(); }
//public void AddLine( RectTransform a, RectTransform b ) //{ // Debug.Log( "Adding line..." ); // var transformPair = new RectTransformPair( a, b ); // if ( TransformPairs.Contains( transformPair ) ) // throw new InvalidOperationException( "Line already defined." ); // TransformPairs.Add( transformPair ); // UpdateVertices(); //} //public void RemoveLine( RectTransform a, RectTransform b ) //{ // var transformPair = new RectTransformPair( a, b ); // if ( !TransformPairs.Contains( transformPair ) ) // throw new InvalidOperationException( "Line not defined." ); // TransformPairs.Remove( transformPair ); // UpdateVertices(); //} public void SetLines(IEnumerable <RectTransformPair> pairs) { TransformPairs.Clear(); if (pairs != null) { TransformPairs.AddRange(pairs); } UpdateVertices(); }