Esempio n. 1
0
        /// <summary>
        /// Gets the point.
        /// </summary>
        /// <returns>The point.</returns>
        /// <param name="currentRectTransform">Current rect transform.</param>
        /// <param name="position">Position.</param>
        protected Vector3 GetPoint(RectTransform currentRectTransform, ConnectorPosition position)
        {
            var rect = (!canvas || !canvas.pixelPerfect)
                                ? currentRectTransform.rect
                                : RectTransformUtility.PixelAdjustRect(currentRectTransform, canvas);

            Vector3 delta;

            if (RootCanvas.renderMode == RenderMode.ScreenSpaceCamera)
            {
                delta = RootCanvas.worldCamera.WorldToScreenPoint(rectTransform.position) - RootCanvas.worldCamera.WorldToScreenPoint(currentRectTransform.position);
            }
            else
            {
                delta = rectTransform.position - currentRectTransform.position;
            }

            rect.x -= delta.x;
            rect.y -= delta.y;

            switch (position)
            {
            case ConnectorPosition.Left:
                rect.y += rect.height / 2f;
                break;

            case ConnectorPosition.Right:
                rect.x += rect.width;
                rect.y += rect.height / 2f;
                break;

            case ConnectorPosition.Top:
                rect.x += rect.width / 2f;
                rect.y += rect.height;
                break;

            case ConnectorPosition.Bottom:
                rect.x += rect.width / 2f;
                break;

            case ConnectorPosition.Center:
                rect.x += rect.width / 2f;
                rect.y += rect.height / 2f;
                break;
            }

            return(new Vector3(rect.x, rect.y, 0));
        }
Esempio n. 2
0
        /// <summary>
        /// Gets the point.
        /// </summary>
        /// <returns>The point.</returns>
        /// <param name="currentRectTransform">Current rect transform.</param>
        /// <param name="position">Position.</param>
        protected Vector3 GetPoint(RectTransform currentRectTransform, ConnectorPosition position)
        {
            var rect = (!canvas || !canvas.pixelPerfect)
                                ? currentRectTransform.rect
                                : RectTransformUtility.PixelAdjustRect(currentRectTransform, canvas);

            var delta = rectTransform.position - currentRectTransform.position;

            rect.x -= delta.x;
            rect.y -= delta.y;

            switch (position)
            {
            case ConnectorPosition.Left:
                rect.y += rect.height / 2f;
                break;

            case ConnectorPosition.Right:
                rect.x += rect.width;
                rect.y += rect.height / 2f;
                break;

            case ConnectorPosition.Top:
                rect.x += rect.width / 2f;
                rect.y += rect.height;
                break;

            case ConnectorPosition.Bottom:
                rect.x += rect.width / 2f;
                break;

            case ConnectorPosition.Center:
                rect.x += rect.width / 2f;
                rect.y += rect.height / 2f;
                break;
            }

            return(new Vector3(rect.x, rect.y));
        }
 /// <summary>
 /// Sets a connecting line position used to connect an annotation with its icon on the side bar
 /// </summary>
 /// <param name="position">One of the allowed position values</param>
 /// <returns>An instance of the widget object</returns>
 public AnnotationWidget ConnectorPos(ConnectorPosition position = ConnectorPosition.Middle)
 {
     _options.ConnectorPos = position;
     return(this);
 }
 /// <summary>
 /// Sets a connecting line position used to connect an annotation with its icon on the side bar
 /// </summary>
 /// <param name="position">One of the allowed position values</param>
 /// <returns>An instance of the widget object</returns>
 public AnnotationWidget ConnectorPos(ConnectorPosition position = ConnectorPosition.Middle)
 {
     _options.ConnectorPos = position;
     return this;
 }
Esempio n. 5
0
        private static TransitionNoduleUIInfo CreateTransitionUIInfo(ConversationNode node, ConnectorPosition position, int i, int count)
        {
            Func <RectangleF, RectangleF> top = (area) =>
            {
                float per = area.Width / (float)count;
                float y   = area.Top - 10;
                return(new RectangleF(area.Left + (int)(per * (i + 0.5f)) - 5, y, 10, 10));
            };

            Func <RectangleF, RectangleF> bottom = (area) =>
            {
                float per = area.Width / (float)count;
                float y   = area.Bottom;
                return(new RectangleF(area.Left + (int)(per * (i + 0.5f)) - 5, y, 10, 10));
            };

            Func <RectangleF, RectangleF> left = (area) =>
            {
                float per = area.Height / (float)count;
                float x   = area.Left - 10;
                return(new RectangleF(x, area.Top + (int)(per * (i + 0.5f)) - 5, 10, 10));
            };

            Func <RectangleF, RectangleF> right = (area) =>
            {
                float per = area.Height / (float)count;
                float x   = area.Right;
                return(new RectangleF(x, area.Top + (int)(per * (i + 0.5f)) - 5, 10, 10));
            };

            var result = new TransitionNoduleUIInfo(position.ForPosition(() => top(node.Renderer.Area), () => bottom(node.Renderer.Area), () => left(node.Renderer.Area), () => right(node.Renderer.Area)));
            Action <Changed <RectangleF> > areaChanged = c =>
            {
                result.Area.Value = position.ForPosition(() => top(node.Renderer.Area), () => bottom(node.Renderer.Area), () => left(node.Renderer.Area), () => right(node.Renderer.Area));
            };

            node.Renderer.AreaChanged += areaChanged;
            node.RendererChanging     += () => node.Renderer.AreaChanged -= areaChanged;
            node.RendererChanged      += () => node.Renderer.AreaChanged += areaChanged;
            return(result);
        }