Ejemplo n.º 1
0
    //init defaut values
    void Init()
    {
        isMouseClickOutside     = false;
        isSelecting             = false;
        selectionStartPoint     = Vector2.zero;
        isDraggingSelectedNodes = false;
        isPanning         = false;
        isZooming         = false;
        isDraggingNewLink = false;
        startedLinkAnchor = null;
        selectedNodeCount = 0;

        isMouseClickOnNode   = false;
        isMouseOverNodeFrame = false;
        isDraggingNode       = false;
        mouseOverNode        = null;

        isMouseClickOnLink   = false;
        isMouseOverLinkFrame = false;
        isDraggingLink       = false;
        mouseOverLink        = null;

        isMouseClickOnAnchor   = false;
        isMouseOverAnchorFrame = false;
        mouseOverAnchor        = null;

        isMouseClickOnOrderingGroup   = false;
        isMouseOverOrderingGroupFrame = false;
        isDraggingOrderingGroup       = false;
        isResizingOrderingGroup       = false;
        mouseOverOrderingGroup        = null;
    }
Ejemplo n.º 2
0
        void AnchorUnlinkedCallback(PWAnchor anchor)
        {
            //TODO: unlink the anchor, remove the link.

            //raise internal event
            // OnLinkRemoved(link);
        }
Ejemplo n.º 3
0
 void LinkStartDragCallback(PWAnchor fromAnchor)
 {
     //disable non-linkable anchors:
     if (fromAnchor.nodeRef != this)
     {
         DisableUnlinkableAnchors(fromAnchor);
     }
 }
Ejemplo n.º 4
0
        public void                             SetAnchorColor(string fieldName, Color newColor, int index = 0)
        {
            PWAnchor anchor = GetAnchorFromField(fieldName, index);

            if (anchor != null)
            {
                anchor.color = newColor;
            }
        }
Ejemplo n.º 5
0
        public void             RemoveLinkFromAnchors(PWAnchor fromAnchor, PWAnchor toAnchor)
        {
            PWNodeLink link = fromAnchor.links.FirstOrDefault(l => l.toAnchor == toAnchor);

            if (link != null)
            {
                RemoveLink(link);
            }
        }
Ejemplo n.º 6
0
        public void                             SetAnchorPosition(string fieldName, int y, int index = 0)
        {
            PWAnchor anchor = GetAnchorFromField(fieldName, index);

            if (anchor != null)
            {
                anchor.forcedY = y;
            }
        }
Ejemplo n.º 7
0
        public void                             SetAnchorName(string fieldName, string newName, int index = 0)
        {
            PWAnchor anchor = GetAnchorFromField(fieldName, index);

            if (anchor != null)
            {
                anchor.name = newName;
            }
        }
Ejemplo n.º 8
0
        public Rect?GetAnchorRect(string fieldName, int index = 0)
        {
            PWAnchor anchor = GetAnchorFromField(fieldName, index);

            if (anchor == null)
            {
                return(null);
            }
            else
            {
                return(anchor.rect);
            }
        }
Ejemplo n.º 9
0
        public int                              GetAnchorLinkCount(string fieldName, int index = 0)
        {
            PWAnchor anchor = GetAnchorFromField(fieldName, index);

            if (anchor == null)
            {
                return(-1);
            }
            else
            {
                return(anchor.linkCount);
            }
        }
Ejemplo n.º 10
0
        public void                             SetAnchorEnabled(string fieldName, bool enabled, int index = 0, bool removeLink = true)
        {
            PWAnchor anchor = GetAnchorFromField(fieldName, index);

            if (anchor != null)
            {
                if (enabled == false && removeLink)
                {
                    anchor.RemoveAllLinks();
                }
                anchor.enabled = enabled;
            }
        }
Ejemplo n.º 11
0
        public void                             SetAnchorVisibility(string fieldName, PWVisibility visibility, int index = 0, bool removeLink = true)
        {
            PWAnchor anchor = GetAnchorFromField(fieldName, index);

            if (anchor != null)
            {
                if (visibility != PWVisibility.Visible && removeLink)
                {
                    anchor.RemoveAllLinks();
                }
                anchor.visibility = visibility;
            }
        }
Ejemplo n.º 12
0
        void DraggedLinkQuitAnchorCallbck(PWAnchor anchor)
        {
            anchor.highlighMode = PWAnchorHighlight.None;

            //reset link hightlight
            foreach (var link in anchor.links)
            {
                link.ResetHighlight();
            }
            foreach (var link in editorEvents.startedLinkAnchor.links)
            {
                link.ResetHighlight();
            }
        }
Ejemplo n.º 13
0
        void            DisableUnlinkableAnchors(PWAnchor anchor)
        {
            List <PWAnchorField> anchorFields;

            if (anchor.anchorType == PWAnchorType.Output)
            {
                anchorFields = inputAnchorFields;
            }
            else
            {
                anchorFields = outputAnchorFields;
            }

            foreach (var anchorField in anchorFields)
            {
                anchorField.DisableIfUnlinkable(anchor);
            }
        }
Ejemplo n.º 14
0
        void DraggedLinkOverAnchorCallback(PWAnchor anchor)
        {
            if (!PWAnchorUtils.AnchorAreAssignable(editorEvents.startedLinkAnchor, anchor))
            {
                return;
            }

            //update anchor highlight
            if (anchor.anchorType == PWAnchorType.Input)
            {
                if (anchor.linkCount >= 1)
                {
                    //highlight links with delete color
                    foreach (var link in anchor.links)
                    {
                        link.highlight = PWLinkHighlight.Delete;
                    }
                    anchor.highlighMode = PWAnchorHighlight.AttachReplace;
                }
                else
                {
                    anchor.highlighMode = PWAnchorHighlight.AttachNew;
                }
            }
            else
            {
                //highlight our link with delete color
                foreach (var link in editorEvents.startedLinkAnchor.links)
                {
                    link.highlight = PWLinkHighlight.Delete;
                }

                if (anchor.linkCount > 0)
                {
                    anchor.highlighMode = PWAnchorHighlight.AttachAdd;
                }
                else
                {
                    anchor.highlighMode = PWAnchorHighlight.AttachNew;
                }
            }
        }
Ejemplo n.º 15
0
        public void                             SetAnchorValue(PWAnchor anchor, object value)
        {
            if (anchor != null && anchorFieldInfoMap.ContainsKey(anchor.fieldName))
            {
                var fieldInfo = anchorFieldInfoMap[anchor.fieldName];

                if (anchor.anchorFieldRef.multiple)
                {
                    var SetValue = fieldInfo.FieldType.GetMethod("AssignAt");
                    SetValue.Invoke(fieldInfo.GetValue(this), new object[] { anchor.fieldIndex, value, anchor.name, true });
                }
                else
                {
                    fieldInfo.SetValue(this, value);
                }
            }
            else
            {
                Debug.LogError("Can't set value " + value + " to anchor " + anchor);
            }
        }
Ejemplo n.º 16
0
        public object                                   GetAnchorValue(PWAnchor anchor)
        {
            if (anchor != null && anchorFieldInfoMap.ContainsKey(anchor.fieldName))
            {
                var fieldInfo = anchorFieldInfoMap[anchor.fieldName];

                if (anchor.anchorFieldRef.multiple)
                {
                    var at = fieldInfo.FieldType.GetMethod("At");
                    return(at.Invoke(fieldInfo.GetValue(this), new object[] { anchor.fieldIndex }));
                }
                else
                {
                    return(fieldInfo.GetValue(this));
                }
            }
            else
            {
                Debug.LogError("Can't get value from anchor " + anchor);
            }

            return(null);
        }
Ejemplo n.º 17
0
    void DrawNodeCurve(PWAnchor anchor, Vector2 endPoint, bool anchorSnapping = true)
    {
        Rect    anchorRect = anchor.rectInGraph;
        Vector3 startPos   = new Vector3(anchorRect.x + anchorRect.width, anchorRect.y + anchorRect.height / 2, 0);
        Vector3 startDir   = Vector3.right;

        if (anchorSnapping && editorEvents.isMouseOverAnchor)
        {
            var toAnchor   = editorEvents.mouseOverAnchor;
            var fromAnchor = editorEvents.startedLinkAnchor;

            if (PWAnchorUtils.AnchorAreAssignable(fromAnchor, toAnchor))
            {
                endPoint = toAnchor.rectInGraph.center;
            }
        }

        float tanPower = (startPos - (Vector3)endPoint).magnitude / 2;

        tanPower = Mathf.Clamp(tanPower, 0, 100);

        DrawSelectedBezier(startPos, endPoint, startPos + startDir * tanPower, (Vector3)endPoint + -startDir * tanPower, anchor.colorSchemeName, 4, PWLinkHighlight.None);
    }
Ejemplo n.º 18
0
 public void             RemoveAllLinksFromAnchor(PWAnchor anchor)
 {
     anchor.RemoveAllLinks();
 }
Ejemplo n.º 19
0
        public object                                   GetAnchorValue(string fieldName, int index)
        {
            PWAnchor anchor = GetAnchorFromField(fieldName, index);

            return(GetAnchorValue(anchor));
        }
Ejemplo n.º 20
0
 void AnchorLinkedCallback(PWAnchor anchor)
 {
     //CreateLink will raise the OnLinkCreated event in the graph and create the link
     graphRef.SafeCreateLink(anchor);
 }
Ejemplo n.º 21
0
 public IEnumerable <PWNode> GetNodesAttachedToAnchor(PWAnchor anchor)
 {
     return((anchor.anchorType == PWAnchorType.Input) ?
            from l in anchor.links select l.fromNode :
            from l in anchor.links select l.toNode);
 }
Ejemplo n.º 22
0
        public void PWGraphBuilderMainGraph()
        {
            var graph = TestUtils.GenerateTestMainGraph();

            //get nodes:
            var slider   = graph.FindNodeByName <PWNodeSlider>("slider");
            var constant = graph.FindNodeByName <PWNodeConstant>("constant");
            var add1     = graph.FindNodeByName <PWNodeAdd>("add1");
            var add2     = graph.FindNodeByName <PWNodeAdd>("add2");
            var add3     = graph.FindNodeByName <PWNodeAdd>("add3");
            var add4     = graph.FindNodeByName <PWNodeAdd>("add4");
            var debug1   = graph.FindNodeByName <PWNodeDebugInfo>("debug1");
            var debug2   = graph.FindNodeByName <PWNodeDebugInfo>("debug2");

            //get anchors
            var sliderAnchor      = slider.outputAnchors.First();
            var constantAnchor    = constant.outputAnchors.FirstOrDefault(a => a.visibility == PWVisibility.Visible);
            var add1InputAnchor   = add1.inputAnchors.First();
            var add1OutputAnchor  = add1.outputAnchors.First();
            var add2InputAnchor   = add2.inputAnchors.First();
            var add2OutputAnchor  = add2.outputAnchors.First();
            var add3InputAnchor   = add3.inputAnchors.First();
            var add4InputAnchor   = add4.inputAnchors.First();
            var add4OutputAnchor  = add4.outputAnchors.First();
            var debug1InputAnchor = debug1.inputAnchors.First();
            var debug2InputAnchor = debug2.inputAnchors.First();

            var add2InputAnchors = add2.inputAnchorFields[0].anchors;

            //slider links:
            var sliderOutList = sliderAnchor.links.Select(l => l.toAnchor).ToList();
            var expectedSliderOutList = new PWAnchor[] { add1InputAnchor, add2InputAnchor }.ToList();

            Assert.That(ScrambledEqual(sliderOutList, expectedSliderOutList));

            //constant links:
            var constantOutList         = constantAnchor.links.Select(l => l.toAnchor).ToList();
            var expectedConstantOutList = add2.inputAnchors.Concat(add3.inputAnchors).ToList();

            Assert.That(ScrambledEqual(constantOutList, expectedConstantOutList));

            //add1 links:
            Assert.That(add1InputAnchor.linkCount == 1);
            Assert.That(add1OutputAnchor.linkCount == 1);
            Assert.That(add1InputAnchor.links[0].fromAnchor == sliderAnchor);
            Assert.That(add1OutputAnchor.links[0].toAnchor == add4InputAnchor);

            //add2 links:
            Assert.That(add2OutputAnchor.linkCount == 1);
            Assert.That(add2OutputAnchor.links[0].toAnchor == debug2InputAnchor);
            Assert.That(add2InputAnchor.links.All(l => l.toNode == add2));
            Assert.That(add2InputAnchors.Count == 3);
            Assert.That(add2InputAnchors[0].linkCount == 1);
            Assert.That(add2InputAnchors[1].linkCount == 1);
            Assert.That(add2InputAnchors[2].linkCount == 0);

            //add3 links:
            Assert.That(add3InputAnchor.linkCount == 1);
            Assert.That(add3InputAnchor.links[0].fromAnchor == constantAnchor);

            //add4 links:
            Assert.That(add4InputAnchor.linkCount == 1);
            Assert.That(add4OutputAnchor.linkCount == 1);
            Assert.That(add4OutputAnchor.links[0].toAnchor == debug1InputAnchor);
            Assert.That(add4InputAnchor.links[0].fromAnchor == add1OutputAnchor);

            //debug1 links:
            Assert.That(debug1InputAnchor.linkCount == 1);
            Assert.That(debug1InputAnchor.links[0].fromAnchor == add4OutputAnchor);

            //debug2 links:
            Assert.That(debug2InputAnchor.linkCount == 1);
            Assert.That(debug2InputAnchor.links[0].fromAnchor == add2OutputAnchor);
        }