private void UpdateTerminator() { if ((UnityEngine.Object)terminator == (UnityEngine.Object)null) { foreach (Node node in nodes) { Type type = node.GetType(); if (type == typeof(TerminalNodeEditor)) { if ((UnityEngine.Object)terminator == (UnityEngine.Object)null) { terminator = (node as TerminalNodeEditor); } else { node.Delete(); } } } if ((UnityEngine.Object)terminator == (UnityEngine.Object)null) { terminator = (TerminalNodeEditor)Node.Create("terminalNodeEditor", Vector2.zero); } } Vector2 position = terminator.rect.min + new Vector2(0f, -290f); DisplayNodeEditor displayNodeEditor = (DisplayNodeEditor)Node.Create("displayNodeEditor", position); displayNodeEditor.Inputs[0].ApplyConnection(terminator.Outputs[0]); }
private Node GetNodeFromLink(Link link) { if (link == null) { return(null); } switch (link.type) { case Link.Type.Primitive: if (primitiveLookup.ContainsKey(link.name)) { return(primitiveLookup[link.name]); } Debug.LogError("Couldnt find [" + link.name + "] in primitives"); break; case Link.Type.Filter: if (filterLookup.ContainsKey(link.name)) { return(filterLookup[link.name]); } Debug.LogError("Couldnt find [" + link.name + "] in filters"); break; case Link.Type.Modifier: if (modifierLookup.ContainsKey(link.name)) { return(modifierLookup[link.name]); } Debug.LogError("Couldnt find [" + link.name + "] in modifiers"); break; case Link.Type.Selector: if (selectorLookup.ContainsKey(link.name)) { return(selectorLookup[link.name]); } Debug.LogError("Couldnt find [" + link.name + "] in selectors"); break; case Link.Type.Transformer: if (transformerLookup.ContainsKey(link.name)) { return(transformerLookup[link.name]); } Debug.LogError("Couldnt find [" + link.name + "] in transformers"); break; case Link.Type.Combiner: if (combinerLookup.ContainsKey(link.name)) { return(combinerLookup[link.name]); } Debug.LogError("Couldnt find [" + link.name + "] in combiners"); break; case Link.Type.FloatPoints: if (floatlistLookup.ContainsKey(link.name)) { return(floatlistLookup[link.name]); } Debug.LogError("Couldnt find [" + link.name + "] in float points"); break; case Link.Type.ControlPoints: if (ctrlpointsLookup.ContainsKey(link.name)) { return(ctrlpointsLookup[link.name]); } Debug.LogError("Couldnt find [" + link.name + "] in control points"); break; case Link.Type.Terminator: if ((UnityEngine.Object)terminator == (UnityEngine.Object)null) { terminator = (TerminalNodeEditor)Node.Create("terminalNodeEditor", Vector2.zero); terminator.name = link.name; } return(terminator); } Debug.LogError("Couldnt find link [" + link.name + "] [" + link.type.ToString() + "]"); return(null); }
public Tree BuildTreeFromCanvas() { Tree tree = new Tree(); tree.settings = settings; foreach (Node node in nodes) { Type type = node.GetType(); if (type == typeof(PrimitiveNodeEditor)) { PrimitiveNodeEditor primitiveNodeEditor = node as PrimitiveNodeEditor; if (primitiveNodeEditor.target.name == null || primitiveNodeEditor.target.name == string.Empty || tree.primitives.ContainsKey(primitiveNodeEditor.target.name)) { primitiveNodeEditor.target.name = "Primitive" + tree.primitives.Count; } tree.primitives.Add(primitiveNodeEditor.target.name, primitiveNodeEditor.target); } else if (type == typeof(FilterNodeEditor)) { FilterNodeEditor filterNodeEditor = node as FilterNodeEditor; if (filterNodeEditor.target.name == null || filterNodeEditor.target.name == string.Empty || tree.filters.ContainsKey(filterNodeEditor.target.name)) { filterNodeEditor.target.name = "Filter" + tree.filters.Count; } tree.filters.Add(filterNodeEditor.target.name, filterNodeEditor.target); } else if (type == typeof(TransformerNodeEditor)) { TransformerNodeEditor transformerNodeEditor = node as TransformerNodeEditor; if (transformerNodeEditor.target.name == null || transformerNodeEditor.target.name == string.Empty || tree.transformers.ContainsKey(transformerNodeEditor.target.name)) { transformerNodeEditor.target.name = "Transformer" + tree.transformers.Count; } tree.transformers.Add(transformerNodeEditor.target.name, transformerNodeEditor.target); } else if (type == typeof(SelectorModuleNodeEditor)) { SelectorModuleNodeEditor selectorModuleNodeEditor = node as SelectorModuleNodeEditor; if (selectorModuleNodeEditor.target.name == null || selectorModuleNodeEditor.target.name == string.Empty || tree.selectors.ContainsKey(selectorModuleNodeEditor.target.name)) { selectorModuleNodeEditor.target.name = "Selector" + tree.selectors.Count; } tree.selectors.Add(selectorModuleNodeEditor.target.name, selectorModuleNodeEditor.target); } else if (type == typeof(ModifierModuleNodeEditor)) { ModifierModuleNodeEditor modifierModuleNodeEditor = node as ModifierModuleNodeEditor; if (modifierModuleNodeEditor.target.name == null || modifierModuleNodeEditor.target.name == string.Empty || tree.modifiers.ContainsKey(modifierModuleNodeEditor.target.name)) { modifierModuleNodeEditor.target.name = "Modifier" + tree.modifiers.Count; } tree.modifiers.Add(modifierModuleNodeEditor.target.name, modifierModuleNodeEditor.target); } else if (type == typeof(CombinerModuleNodeEditor)) { CombinerModuleNodeEditor combinerModuleNodeEditor = node as CombinerModuleNodeEditor; if (combinerModuleNodeEditor.target.name == null || combinerModuleNodeEditor.target.name == string.Empty || tree.combiners.ContainsKey(combinerModuleNodeEditor.target.name)) { combinerModuleNodeEditor.target.name = "Combiner" + tree.combiners.Count; } tree.combiners.Add(combinerModuleNodeEditor.target.name, combinerModuleNodeEditor.target); } else if (type == typeof(FloatPointsNodeEditor)) { FloatPointsNodeEditor floatPointsNodeEditor = node as FloatPointsNodeEditor; if (floatPointsNodeEditor.target.name == null || floatPointsNodeEditor.target.name == string.Empty || tree.floats.ContainsKey(floatPointsNodeEditor.target.name)) { floatPointsNodeEditor.target.name = "Terrace Control" + tree.combiners.Count; } tree.floats.Add(floatPointsNodeEditor.target.name, floatPointsNodeEditor.target); } else if (type == typeof(ControlPointsNodeEditor)) { ControlPointsNodeEditor controlPointsNodeEditor = node as ControlPointsNodeEditor; if (controlPointsNodeEditor.target.name == null || controlPointsNodeEditor.target.name == string.Empty || tree.controlpoints.ContainsKey(controlPointsNodeEditor.target.name)) { controlPointsNodeEditor.target.name = "Curve Control" + tree.combiners.Count; } tree.controlpoints.Add(controlPointsNodeEditor.target.name, controlPointsNodeEditor.target); } else if (type == typeof(TerminalNodeEditor) && (UnityEngine.Object)terminator == (UnityEngine.Object)null) { terminator = (node as TerminalNodeEditor); } } foreach (Node node2 in nodes) { Type type2 = node2.GetType(); if (type2 == typeof(FilterNodeEditor)) { FilterNodeEditor filterNodeEditor2 = node2 as FilterNodeEditor; NodeLink nodeLink = new NodeLink(); nodeLink.target = GetLink(node2); if ((UnityEngine.Object)filterNodeEditor2.Inputs[0] != (UnityEngine.Object)null && (UnityEngine.Object)filterNodeEditor2.Inputs[0].connection != (UnityEngine.Object)null) { nodeLink.source0 = GetLink(filterNodeEditor2.Inputs[0].connection.body); } tree.links.Add(nodeLink); } else if (type2 == typeof(TransformerNodeEditor)) { TransformerNodeEditor transformerNodeEditor2 = node2 as TransformerNodeEditor; NodeLink nodeLink2 = new NodeLink(); nodeLink2.target = GetLink(node2); if ((UnityEngine.Object)transformerNodeEditor2.Inputs[0] != (UnityEngine.Object)null && (UnityEngine.Object)transformerNodeEditor2.Inputs[0].connection != (UnityEngine.Object)null) { nodeLink2.source0 = GetLink(transformerNodeEditor2.Inputs[0].connection.body); } if ((UnityEngine.Object)transformerNodeEditor2.Inputs[1] != (UnityEngine.Object)null && (UnityEngine.Object)transformerNodeEditor2.Inputs[1].connection != (UnityEngine.Object)null) { nodeLink2.source1 = GetLink(transformerNodeEditor2.Inputs[1].connection.body); } if ((UnityEngine.Object)transformerNodeEditor2.Inputs[2] != (UnityEngine.Object)null && (UnityEngine.Object)transformerNodeEditor2.Inputs[2].connection != (UnityEngine.Object)null) { nodeLink2.source2 = GetLink(transformerNodeEditor2.Inputs[2].connection.body); } if ((UnityEngine.Object)transformerNodeEditor2.Inputs[3] != (UnityEngine.Object)null && (UnityEngine.Object)transformerNodeEditor2.Inputs[3].connection != (UnityEngine.Object)null) { nodeLink2.source3 = GetLink(transformerNodeEditor2.Inputs[3].connection.body); } tree.links.Add(nodeLink2); } else if (type2 == typeof(SelectorModuleNodeEditor)) { SelectorModuleNodeEditor selectorModuleNodeEditor2 = node2 as SelectorModuleNodeEditor; NodeLink nodeLink3 = new NodeLink(); nodeLink3.target = GetLink(node2); if ((UnityEngine.Object)selectorModuleNodeEditor2.Inputs[0] != (UnityEngine.Object)null && (UnityEngine.Object)selectorModuleNodeEditor2.Inputs[0].connection != (UnityEngine.Object)null) { nodeLink3.source0 = GetLink(selectorModuleNodeEditor2.Inputs[0].connection.body); } if ((UnityEngine.Object)selectorModuleNodeEditor2.Inputs[1] != (UnityEngine.Object)null && (UnityEngine.Object)selectorModuleNodeEditor2.Inputs[1].connection != (UnityEngine.Object)null) { nodeLink3.source1 = GetLink(selectorModuleNodeEditor2.Inputs[1].connection.body); } if ((UnityEngine.Object)selectorModuleNodeEditor2.Inputs[2] != (UnityEngine.Object)null && (UnityEngine.Object)selectorModuleNodeEditor2.Inputs[2].connection != (UnityEngine.Object)null) { nodeLink3.source2 = GetLink(selectorModuleNodeEditor2.Inputs[2].connection.body); } tree.links.Add(nodeLink3); } else if (type2 == typeof(ModifierModuleNodeEditor)) { ModifierModuleNodeEditor modifierModuleNodeEditor2 = node2 as ModifierModuleNodeEditor; NodeLink nodeLink4 = new NodeLink(); nodeLink4.target = GetLink(node2); if ((UnityEngine.Object)modifierModuleNodeEditor2.Inputs[0] != (UnityEngine.Object)null && (UnityEngine.Object)modifierModuleNodeEditor2.Inputs[0].connection != (UnityEngine.Object)null) { nodeLink4.source0 = GetLink(modifierModuleNodeEditor2.Inputs[0].connection.body); } if ((UnityEngine.Object)modifierModuleNodeEditor2.Inputs[1] != (UnityEngine.Object)null && (UnityEngine.Object)modifierModuleNodeEditor2.Inputs[1].connection != (UnityEngine.Object)null) { nodeLink4.source1 = GetLink(modifierModuleNodeEditor2.Inputs[1].connection.body); } if ((UnityEngine.Object)modifierModuleNodeEditor2.Inputs[2] != (UnityEngine.Object)null && (UnityEngine.Object)modifierModuleNodeEditor2.Inputs[2].connection != (UnityEngine.Object)null) { nodeLink4.source2 = GetLink(modifierModuleNodeEditor2.Inputs[2].connection.body); } tree.links.Add(nodeLink4); } else if (type2 == typeof(CombinerModuleNodeEditor)) { CombinerModuleNodeEditor combinerModuleNodeEditor2 = node2 as CombinerModuleNodeEditor; NodeLink nodeLink5 = new NodeLink(); nodeLink5.target = GetLink(node2); if ((UnityEngine.Object)combinerModuleNodeEditor2.Inputs[0] != (UnityEngine.Object)null && (UnityEngine.Object)combinerModuleNodeEditor2.Inputs[0].connection != (UnityEngine.Object)null) { nodeLink5.source0 = GetLink(combinerModuleNodeEditor2.Inputs[0].connection.body); } if ((UnityEngine.Object)combinerModuleNodeEditor2.Inputs[1] != (UnityEngine.Object)null && (UnityEngine.Object)combinerModuleNodeEditor2.Inputs[1].connection != (UnityEngine.Object)null) { nodeLink5.source1 = GetLink(combinerModuleNodeEditor2.Inputs[1].connection.body); } tree.links.Add(nodeLink5); } else if (type2 == typeof(TerminalNodeEditor)) { TerminalNodeEditor terminalNodeEditor = node2 as TerminalNodeEditor; NodeLink nodeLink6 = new NodeLink(); nodeLink6.target = GetLink(node2); if ((UnityEngine.Object)terminalNodeEditor.Inputs[0] != (UnityEngine.Object)null && (UnityEngine.Object)terminalNodeEditor.Inputs[0].connection != (UnityEngine.Object)null) { nodeLink6.source0 = GetLink(terminalNodeEditor.Inputs[0].connection.body); } tree.links.Add(nodeLink6); } } return(tree); }