Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
 private Vector3 GetAnchorA()
 {
     return(AnchorA.GetPosition());
 }
Ejemplo n.º 4
0
 public override int GetHashCode()
 {
     return(AnchorA.GetHashCode() ^ AnchorB.GetHashCode());
 }