Пример #1
0
    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]);
    }
Пример #2
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);
    }
Пример #3
0
    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);
    }