Ejemplo n.º 1
0
        private void DrawNodeCurve(UnityEngine.UI.Windows.Plugins.Flow.Data.FlowWindow fromContainer, UnityEngine.UI.Windows.Plugins.Flow.Data.FlowWindow toContainer, UnityEngine.UI.Windows.Plugins.Flow.Data.FlowWindow fromWindow, UnityEngine.UI.Windows.Plugins.Flow.Data.FlowWindow toWindow, Rect centerStart, Rect centerEnd, Rect fromRect, Rect toRect, bool doubleSide, float size = 6f)
        {
            Rect start = fromRect;
            Rect end   = toRect;

            var color1 = Color.white;
            var color2 = Color.white;

            if (fromContainer != toContainer)
            {
                color1 = Color.gray;
                color2 = Color.gray;

                if (toContainer != null)
                {
                    color1 = toContainer.randomColor;
                }
                if (fromContainer != null)
                {
                    color2 = fromContainer.randomColor;
                }
            }

            var zOffset = -4f;

            if (doubleSide == true)
            {
                var rot = Quaternion.AngleAxis(90f, Vector3.back);
                var ray = new Ray(Vector3.zero, (rot * (end.center - start.center)).normalized);

                var offset = ray.GetPoint(size);

                var startPos = new Vector3(start.center.x + offset.x, start.center.y + offset.y, zOffset);
                var endPos   = new Vector3(centerEnd.center.x + offset.x, centerEnd.center.y + offset.y, zOffset);

                this.DrawNodeCurve(startPos, endPos, color1);

                offset   = ray.GetPoint(-size);
                startPos = new Vector3(centerStart.center.x + offset.x, centerStart.center.y + offset.y, zOffset);
                endPos   = new Vector3(end.center.x + offset.x, end.center.y + offset.y, zOffset);

                this.DrawNodeCurve(endPos, startPos, color2);
            }
            else
            {
                var offset = Vector2.zero;

                var startPos = new Vector3(start.center.x + offset.x, start.center.y + offset.y, zOffset);
                var endPos   = new Vector3(centerEnd.center.x + offset.x, centerEnd.center.y + offset.y, zOffset);

                this.DrawNodeCurve(startPos, endPos, color1);
            }
        }
Ejemplo n.º 2
0
        public void DrawComponentCurve(UnityEngine.UI.Windows.Plugins.Flow.Data.FlowWindow from, ref UnityEngine.UI.Windows.Plugins.Flow.Data.FlowWindow.ComponentLink link, UnityEngine.UI.Windows.Plugins.Flow.Data.FlowWindow to)
        {
            if (from.IsEnabled() == false || to.IsEnabled() == false)
            {
                return;
            }

            var component = from.GetLayoutComponent(link.sourceComponentTag);

            if (component != null)
            {
                var rect = component.tempEditorRect;

                var start = new Rect(from.rect.x + rect.x, from.rect.y + rect.y, rect.width, rect.height);
                var end   = to.rect;

                var zOffset = -4f;

                var offset   = Vector2.zero;
                var startPos = new Vector3(start.center.x + offset.x, start.center.y + offset.y, zOffset);
                var endPos   = new Vector3(end.center.x + offset.x, end.center.y + offset.y, zOffset);

                var scale = FlowSystem.GetData().flowWindowWithLayoutScaleFactor;

                var side1        = from.rect.size.x * 0.5f;
                var side2        = from.rect.size.y * 0.5f;
                var stopDistance = Mathf.Sqrt(side1 * side1 + side2 * side2);

                var color = Color.white;
                if (from.GetContainer() != to.GetContainer())
                {
                    color = Color.gray;
                    if (to.GetContainer() != null)
                    {
                        color = to.GetContainer().randomColor;
                    }
                }
                var comment = this.DrawComponentCurve(startPos, endPos, color, stopDistance + 50f * scale, link.comment);
                if (link.comment != comment)
                {
                    link.comment = comment;
                    FlowSystem.SetDirty();
                }
            }
        }
Ejemplo n.º 3
0
 public static bool IsSocial(this UnityEngine.UI.Windows.Plugins.Flow.Data.FlowWindow window)
 {
     return((window.flags & UnityEngine.UI.Windows.Plugins.Flow.Data.FlowWindow.Flags.Tag1) != 0);
 }
Ejemplo n.º 4
0
        public void DrawNodeCurve(UnityEngine.UI.Windows.AttachItem attachItem, UnityEngine.UI.Windows.Plugins.Flow.Data.FlowWindow from, UnityEngine.UI.Windows.Plugins.Flow.Data.FlowWindow to, bool doubleSide)
        {
            if (from.IsEnabled() == false || to.IsEnabled() == false)
            {
                return;
            }

            var fromRect = from.rect;
            var toRect   = to.rect;

            if (from != null && to != null)
            {
                var delta = Flow.OnDrawNodeCurveOffset(this.editor, attachItem, from, to, doubleSide);
                fromRect.center += delta;
            }

            Rect centerStart = fromRect;
            Rect centerEnd   = toRect;

            var fromComponent = false;
            var toComponent   = false;

            if (from.IsFunction() == true &&
                from.IsContainer() == false)
            {
                var func = FlowSystem.GetWindow(from.GetFunctionId());
                if (func != null)
                {
                    var selected   = FlowSystem.GetSelected();
                    var isSelected = selected.Contains(from.id) || (selected.Count == 0 && this.editor.focusedGUIWindow == from.id);
                    if (isSelected == true)
                    {
                        var color     = new Color(0f, 0f, 0f, 0.1f);
                        var backColor = new Color(0.5f, 0.5f, 0.5f, 0.1f);

                        this.DrawPolygon(new Vector3(from.rect.xMin, from.rect.yMin, 0f),
                                         new Vector3(func.rect.xMin, func.rect.yMin, 0f),
                                         new Vector3(func.rect.xMin, func.rect.yMax, 0f),
                                         new Vector3(from.rect.xMin, from.rect.yMax, 0f),
                                         backColor);

                        this.DrawPolygon(new Vector3(from.rect.xMin, from.rect.yMin, 0f),
                                         new Vector3(func.rect.xMin, func.rect.yMin, 0f),
                                         new Vector3(func.rect.xMax, func.rect.yMin, 0f),
                                         new Vector3(from.rect.xMax, from.rect.yMin, 0f),
                                         backColor);

                        this.DrawPolygon(new Vector3(from.rect.xMax, from.rect.yMin, 0f),
                                         new Vector3(func.rect.xMax, func.rect.yMin, 0f),
                                         new Vector3(func.rect.xMax, func.rect.yMax, 0f),
                                         new Vector3(from.rect.xMax, from.rect.yMax, 0f),
                                         backColor);

                        this.DrawPolygon(new Vector3(from.rect.xMax, from.rect.yMax, 0f),
                                         new Vector3(func.rect.xMax, func.rect.yMax, 0f),
                                         new Vector3(func.rect.xMin, func.rect.yMax, 0f),
                                         new Vector3(from.rect.xMin, from.rect.yMax, 0f),
                                         backColor);

                        this.DrawNodeCurveDotted(new Vector3(from.rect.xMin, from.rect.yMin, 0f),
                                                 new Vector3(func.rect.xMin, func.rect.yMin, 0f),
                                                 color
                                                 );

                        this.DrawNodeCurveDotted(new Vector3(from.rect.xMin, from.rect.yMax, 0f),
                                                 new Vector3(func.rect.xMin, func.rect.yMax, 0f),
                                                 color
                                                 );

                        this.DrawNodeCurveDotted(new Vector3(from.rect.xMax, from.rect.yMin, 0f),
                                                 new Vector3(func.rect.xMax, func.rect.yMin, 0f),
                                                 color
                                                 );

                        this.DrawNodeCurveDotted(new Vector3(from.rect.xMax, from.rect.yMax, 0f),
                                                 new Vector3(func.rect.xMax, func.rect.yMax, 0f),
                                                 color
                                                 );
                    }
                }
            }

            if (FlowSystem.GetData().HasView(FlowView.Layout) == true)
            {
                var comps = from.attachedComponents.Where((c) => c.targetWindowId == to.id && c.sourceComponentTag != LayoutTag.None);
                foreach (var comp in comps)
                {
                    var component = from.GetLayoutComponent(comp.sourceComponentTag);
                    if (component != null)
                    {
                        fromRect = centerStart;

                        var rect = component.tempEditorRect;
                        fromRect = new Rect(fromRect.x + rect.x, fromRect.y + rect.y, rect.width, rect.height);

                        this.DrawNodeCurve(from.GetContainer(), to.GetContainer(), from, to, centerStart, centerEnd, fromRect, toRect, doubleSide, 0f);

                        fromComponent = true;
                    }
                }

                if (doubleSide == true)
                {
                    comps = to.attachedComponents.Where((c) => c.targetWindowId == from.id && c.sourceComponentTag != LayoutTag.None);
                    foreach (var comp in comps)
                    {
                        var component = to.GetLayoutComponent(comp.sourceComponentTag);
                        if (component != null)
                        {
                            toRect = centerEnd;

                            var rect = component.tempEditorRect;
                            toRect = new Rect(toRect.x + rect.x, toRect.y + rect.y, rect.width, rect.height);

                            this.DrawNodeCurve(from.GetContainer(), to.GetContainer(), from, to, centerStart, centerEnd, fromRect, toRect, doubleSide, 0f);

                            toComponent = true;
                        }
                    }
                }
            }

            if (fromComponent == false && toComponent == false)
            {
                this.DrawNodeCurve(from.GetContainer(), to.GetContainer(), from, to, centerStart, centerEnd, fromRect, toRect, doubleSide);
            }
        }