private float OuterRadialLength(IRadial outerRadial, float radius)
        {
            if (outerRadial.IsActive == false)
            {
                return(0);
            }

            var annulusSize  = outerRadial.OuterRadius - outerRadial.InnerRadius;
            var linePosition = Vector3.MoveTowards(Target.position, LineToRadial.position, (radius + annulusSize / 2f) * Canvas.scaleFactor);

            return(outerRadial.IsPositionWithinRadial(linePosition, false) ? annulusSize : 0);
        }
Beispiel #2
0
        public void UpdateLines(IRadial outerRadial, int radius)
        {
            if (BranchPosition.IsWorldPosition == false)
            {
                return;
            }

            UpdateDirection();

            var originPos        = Origin.anchoredPosition;
            var targetPos        = Target.anchoredPosition;
            var distanceToRadial = lineSize.x + radius;
            var relativePos      = originPos - targetPos;

            if (distanceToRadial * distanceToRadial > relativePos.sqrMagnitude)
            {
                SetLinesActive(false);
                return;
            }

            SetLinesActive(true);

            var   absDeltaY = Mathf.Abs(relativePos.y);
            float length    = 0;

            if (absDeltaY < distanceToRadial)
            {
                var lineAngle = RightAngle - Mathf.Asin(absDeltaY * SineRightAngle / distanceToRadial);
                length = distanceToRadial * Mathf.Sin(lineAngle) / SineRightAngle;
            }

            var xPos   = targetPos.x + (length * CurrentQuadrant.x);
            var yPos   = originPos.y + (LineToRadial.rect.height / 2) * CurrentQuadrant.y;
            var newPos = new Vector2(xPos, yPos);

            RepositionLineToRadial(newPos);
            SetLineSize(LineFromOrigin, Math.Abs(originPos.x - (Origin.rect.width / 2 * CurrentQuadrant.x) - LineToRadial.anchoredPosition.x));

            var lineToRadialLength = length <= 0 ? absDeltaY : distanceToRadial;

            lineToRadialLength -= radius + OuterRadialLength(outerRadial, radius);

            SetLineSize(LineToRadial, lineToRadialLength);
        }