public void UpdateLine() { var canvas = gameObject.GetComponentInParent <Canvas>(); if (canvas != null) { if (cachedRectTransformSet == false) { cachedRectTransform = GetComponent <RectTransform>(); cachedRectTransformSet = true; } var canvasRectTransform = canvas.transform as RectTransform; var pointA = default(Vector3); var pointB = default(Vector3); var pointAValid = AnchorA.TryGetPoint(canvasRectTransform, ref pointA, worldCamera); var pointBValid = AnchorB.TryGetPoint(canvasRectTransform, ref pointB, worldCamera); if (pointAValid == true || pointBValid == true) { var pointV = pointB - pointA; var pointM = (pointA + pointB) * 0.5f; // Position in middle SetPosition(cachedRectTransform, pointM); // Stretch to pointV var sizeDelta = cachedRectTransform.sizeDelta; var scaleFactor = canvas.scaleFactor; sizeDelta.y = pointV.magnitude; if (scaleFactor != 0.0f) { sizeDelta.y /= scaleFactor; } cachedRectTransform.sizeDelta = sizeDelta; // Rotate to pointV var angle = Mathf.Atan2(pointV.x, pointV.y) * Mathf.Rad2Deg; cachedRectTransform.localRotation = Quaternion.Euler(0.0f, 0.0f, -angle); } else { // Position outside view SetPosition(cachedRectTransform, new Vector3(100000.0f, 100000.0f)); cachedRectTransform.sizeDelta = Vector2.zero; } } }
public bool IsIntersection() { IntersectionEntrance ieA = AnchorA.GetComponent <IntersectionEntrance>(); IntersectionEntrance ieB = AnchorB.GetComponent <IntersectionEntrance>(); if (ieA == null || ieB == null) { return(false); } if (ieA.centre == ieB.centre) { return(true); } return(false); }
private Vector3 GetAnchorA() { return(AnchorA.GetPosition()); }
public override int GetHashCode() { return(AnchorA.GetHashCode() ^ AnchorB.GetHashCode()); }