public NodeAction createNodeAction(DialoguePath path = null, Action action = null)
        {
            //If no path,
            if (path == null)
            {
                //create a path
                path = createContainerNode().path;
            }
            NodeDialogue container = containers.First(cn => cn.path == path);

            //Add a node to the path
            if (action == null)
            {
                //Set default variable name
                string defaultVarName = dialogueData.Variables.Last();
                if (path.conditions.Count > 0)
                {
                    defaultVarName = path.conditions[0].variableName;
                }
                //Create new action
                action      = new Action(defaultVarName);
                action.path = path;
                path.actions.Add(action);
            }
            NodeAction node = new NodeAction(action);

            container.AddNode(node);
            return(node);
        }
        /// <summary>
        /// This method makes a UI node for the given quote in the given dialogue path
        /// </summary>
        /// <param name="path"></param>
        /// <param name="quote"></param>
        /// <returns></returns>
        public NodeQuote createNodeQuote(DialoguePath path, Quote quote)
        {
            NodeQuote    node      = new NodeQuote(quote);
            NodeDialogue container = containers.First(cn => cn.path == path);

            container.AddNode(node);
            return(node);
        }
        public NodeCondition createNodeCondition(DialoguePath path = null, Condition condition = null)
        {
            //If no path,
            if (path == null)
            {
                //create a path
                path = createContainerNode().path;
            }
            NodeDialogue container = containers.First(cn => cn.path == path);

            //Add a node to the path
            if (condition == null)
            {
                //Find template
                Condition template = null;
                if (containers.Count > 0)
                {
                    List <NodeDialogue> templateContainers = containers
                                                             .Where(c => c.path.conditions.Count > 0).ToList();
                    if (templateContainers.Count > 0)
                    {
                        template = templateContainers.Last()
                                   .path.conditions[0];
                    }
                }
                //Create condition
                if (template != null)
                {
                    condition = new Condition(
                        template.variableName,
                        template.testType,
                        template.testValue + 1
                        );
                }
                else
                {
                    condition = new Condition(dialogueData.Variables.Last());
                }
                condition.path = path;
                path.conditions.Add(condition);
            }
            NodeCondition node = new NodeCondition(condition);

            container.AddNode(node);
            return(node);
        }