//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; }
void AnchorUnlinkedCallback(PWAnchor anchor) { //TODO: unlink the anchor, remove the link. //raise internal event // OnLinkRemoved(link); }
void LinkStartDragCallback(PWAnchor fromAnchor) { //disable non-linkable anchors: if (fromAnchor.nodeRef != this) { DisableUnlinkableAnchors(fromAnchor); } }
public void SetAnchorColor(string fieldName, Color newColor, int index = 0) { PWAnchor anchor = GetAnchorFromField(fieldName, index); if (anchor != null) { anchor.color = newColor; } }
public void RemoveLinkFromAnchors(PWAnchor fromAnchor, PWAnchor toAnchor) { PWNodeLink link = fromAnchor.links.FirstOrDefault(l => l.toAnchor == toAnchor); if (link != null) { RemoveLink(link); } }
public void SetAnchorPosition(string fieldName, int y, int index = 0) { PWAnchor anchor = GetAnchorFromField(fieldName, index); if (anchor != null) { anchor.forcedY = y; } }
public void SetAnchorName(string fieldName, string newName, int index = 0) { PWAnchor anchor = GetAnchorFromField(fieldName, index); if (anchor != null) { anchor.name = newName; } }
public Rect?GetAnchorRect(string fieldName, int index = 0) { PWAnchor anchor = GetAnchorFromField(fieldName, index); if (anchor == null) { return(null); } else { return(anchor.rect); } }
public int GetAnchorLinkCount(string fieldName, int index = 0) { PWAnchor anchor = GetAnchorFromField(fieldName, index); if (anchor == null) { return(-1); } else { return(anchor.linkCount); } }
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; } }
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; } }
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(); } }
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); } }
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; } } }
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); } }
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); }
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); }
public void RemoveAllLinksFromAnchor(PWAnchor anchor) { anchor.RemoveAllLinks(); }
public object GetAnchorValue(string fieldName, int index) { PWAnchor anchor = GetAnchorFromField(fieldName, index); return(GetAnchorValue(anchor)); }
void AnchorLinkedCallback(PWAnchor anchor) { //CreateLink will raise the OnLinkCreated event in the graph and create the link graphRef.SafeCreateLink(anchor); }
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); }
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); }