public static VariableConditionalNode Create(DialogNodeEditor.VariableConditionalNode editorNode)
        {
            VariableConditionalNode created = ScriptableObject.CreateInstance <VariableConditionalNode>();

            created.conditions = new List <VariableConditionItem>(editorNode.conditions);
            created.condGroup  = editorNode.condGroup;

            return(created);
        }
示例#2
0
        private static void Recursive(Node processing, BaseDialogNode currentRef, Conversation tree)
        {
            if (processing == null)
            {
                Debug.Log("Converter: Recursive(): Why bother ask me to process a null object? Returnning.");
                return;
            }


            //If skip this check, the recursion will stuck, as pretty much execute in the for().
            //Will prevent going deeper at End Node
            if (processing.Outputs.Count == 0)
            {
                return;
            }


            for (int i = 0; i < processing.Outputs.Count; i++)
            {
                BaseDialogNode creating = null;
                if (processing.Outputs[i].GetNodeAcrossConnection() == null)
                {
                    Debug.Log("Converter: This connect to nothing. Returning.");
                    return;
                }
                if (Translate(processing.Outputs[i].GetNodeAcrossConnection().GetType()) == null)
                {
                    Debug.Log("Converter: Warning! Recursive() receiving null translated type.");
                    return;
                }
                else if (Translate(processing.Outputs[i].GetNodeAcrossConnection().GetType()) == typeof(ConversationEndNode))
                {
                    creating = ConversationEndNode.Create(currentRef);
                }
                else if (Translate(processing.Outputs[i].GetNodeAcrossConnection().GetType()) == typeof(SimpleDialogNode))
                {
                    creating = SimpleDialogNode.Create(((DialogNodeEditor.SimpleDialogNode)processing.Outputs[i].GetNodeAcrossConnection()), currentRef);
                }
                else if (Translate(processing.Outputs[i].GetNodeAcrossConnection().GetType()) == typeof(OptionsDialogNode))
                {
                    creating = OptionsDialogNode.Create(((DialogNodeEditor.OptionsDialogNode)processing.Outputs[i].GetNodeAcrossConnection()), currentRef);
                }
                else if (Translate(processing.Outputs[i].GetNodeAcrossConnection().GetType()) == typeof(VariableControlNode))
                {
                    creating = VariableControlNode.Create((DialogNodeEditor.VariableControlNode)processing.Outputs[i].GetNodeAcrossConnection());
                }
                else if (Translate(processing.Outputs[i].GetNodeAcrossConnection().GetType()) == typeof(VariableConditionalNode))
                {
                    creating = VariableConditionalNode.Create((DialogNodeEditor.VariableConditionalNode)processing.Outputs[i].GetNodeAcrossConnection());
                }
                else if (Translate(processing.Outputs[i].GetNodeAcrossConnection().GetType()) == typeof(RandomOutputNode))
                {
                    creating = RandomOutputNode.Create(currentRef);
                }
                else if (Translate(processing.Outputs[i].GetNodeAcrossConnection().GetType()) == typeof(ConversationJumpNode))
                {
                    creating = ConversationJumpNode.Create(((DialogNodeEditor.ConversationJumpNode)processing.Outputs[i].GetNodeAcrossConnection()), currentRef);
                }

                tree.AddNode(creating);
                Recursive(processing.Outputs[i].GetNodeAcrossConnection(), creating, tree);
            }
        }