Inheritance: UnityEngine.ScriptableObject
 /// <summary>
 /// Creates and opens a new empty node canvas
 /// </summary>
 public void NewNodeCanvas()
 {
     nodeCanvas       = ScriptableObject.CreateInstance <Node_Canvas_Object> ();
     nodeCanvas.nodes = new List <Node> ();
     openedCanvas     = "New Canvas";
     openedCanvasPath = "";
 }
    /// <summary>
    /// Loads the a node canvas from an asset
    /// </summary>
    public void LoadNodeCanvas(string path)
    {
        if (String.IsNullOrEmpty(path))
        {
            return;
        }
        Object[] objects = AssetDatabase.LoadAllAssetsAtPath(path);
        if (objects.Length == 0)
        {
            return;
        }
        Node_Canvas_Object newNodeCanvas = null;

        for (int cnt = 0; cnt < objects.Length; cnt++)
        {         // We only have to search for the Node Canvas itself in the mess, because it still hold references to all of it's nodes and their connections
            object obj = objects [cnt];
            if (obj.GetType() == typeof(Node_Canvas_Object))
            {
                newNodeCanvas = obj as Node_Canvas_Object;
            }
        }
        if (newNodeCanvas == null)
        {
            return;
        }
        nodeCanvas = newNodeCanvas;

        string[] folders = path.Split(new char[] { '/' }, StringSplitOptions.None);
        openedCanvas     = folders [folders.Length - 1];
        openedCanvasPath = path;

        Repaint();
        AssetDatabase.Refresh();
    }
Example #3
0
    private void LoadBehaviour(string behaviourName)
    {
        if (isBehaviourLoaded(behaviourName))
        {
            return;
        }

        BehaviourContainer tmpContainer = new BehaviourContainer();

        tmpContainer.BehaviourName = behaviourName;

        XmlSerializer serializer = new XmlSerializer(typeof(Node_Canvas_Object));

        StreamReader lecteur = new StreamReader("Assets/Resources/Behaviours/" + behaviourName + ".xml");

        Node_Canvas_Object nodeCanvas = (Node_Canvas_Object)serializer.Deserialize(lecteur);

        foreach (Node n1 in nodeCanvas.nodes)
        {
            if (n1.Linkers[0])
            {
                n1.Linkers[0].body = n1;
            }
            for (int i = 1; i < 4; ++i)
            {
                if (n1.Linkers[i])
                {
                    n1.Linkers[i].body = n1;
                    foreach (Node n2 in nodeCanvas.nodes)
                    {
                        if (n1.Linkers[i].connectionID == n2.ID)
                        {
                            n1.Linkers[i].connection = n2.Linkers[(int)Node.LinkType.From];
                            n2.Linkers[(int)Node.LinkType.From].connection = n1.Linkers[i];
                        }
                    }
                }
            }
        }

        lecteur.Close();

        Behaviours.Add(tmpContainer);

        tmpContainer.canvas = nodeCanvas;

        foreach (Node node in tmpContainer.canvas.nodes)
        {
            if (node.name == "Root")
            {
                tmpContainer.root        = node;
                tmpContainer.currentNode = tmpContainer.root.Linkers[(int)Node.LinkType.To].connection.body;
            }
        }

        Behaviours.Add(tmpContainer);
    }
Example #4
0
    /// <summary>
    /// Creates and opens a new empty node canvas
    /// </summary>
    public void NewNodeCanvas()
    {
        nodeCanvas       = ScriptableObject.CreateInstance <Node_Canvas_Object>();
        nodeCanvas.nodes = new List <Node>();
        openedCanvas     = "New Canvas";
        openedCanvasPath = "";

        RootNode rootNode = RootNode.Create(new Rect(0, 0, 100, 50));
        EndNode  endNode  = EndNode.Create(new Rect(0, 200, 100, 50));

        rootNode.Linkers[(int)Node.LinkType.To].connection    = endNode.Linkers[(int)Node.LinkType.From];
        rootNode.Linkers[(int)Node.LinkType.To].connectionID  = endNode.ID;
        endNode.Linkers[(int)Node.LinkType.From].connection   = rootNode.Linkers[(int)Node.LinkType.To];
        endNode.Linkers[(int)Node.LinkType.From].connectionID = rootNode.ID;
    }
Example #5
0
    /// <summary>
    /// Loads the a node canvas from an asset
    /// </summary>
    public void LoadNodeCanvas(string path)
    {
        XmlSerializer serializer = new XmlSerializer(typeof(Node_Canvas_Object));

        StreamReader lecteur = new StreamReader(path);

        nodeCanvas = (Node_Canvas_Object)serializer.Deserialize(lecteur);

        foreach (Node n1 in nodeCanvas.nodes)
        {
            StartStepNode stepNode = n1 as StartStepNode;
            if (stepNode)
            {
                stepNode.InitCustom();
            }

            if (n1.Linkers[0])
            {
                n1.Linkers[0].body = n1;
            }
            for (int i = 1; i < 4; ++i)
            {
                if (n1.Linkers[i])
                {
                    n1.Linkers[i].body = n1;
                    foreach (Node n2 in nodeCanvas.nodes)
                    {
                        if (n1.Linkers[i].connectionID == n2.ID)
                        {
                            n1.Linkers[i].connection = n2.Linkers[(int)Node.LinkType.From];
                            n2.Linkers[(int)Node.LinkType.From].connection = n1.Linkers[i];
                        }
                    }
                }
            }
        }

        lecteur.Close();
        Repaint();
    }
Example #6
0
    protected void LoadCanvas(string name)
    {
        string path = "Assets/Node_Editor/Saves/" + name + ".asset";
        Object[] objects = AssetDatabase.LoadAllAssetsAtPath (path);
        if (objects.Length == 0)
        {
            return;
        }
        Node_Canvas_Object newNodeCanvas = null;

        for (int cnt = 0; cnt < objects.Length; cnt++)
        { // We only have to search for the Node Canvas itself in the mess, because it still hold references to all of it's nodes and their connections
            object obj = objects [cnt];
            if (obj.GetType () == typeof (Node_Canvas_Object))
                newNodeCanvas = obj as Node_Canvas_Object;
        }
        if (newNodeCanvas == null)
        {
            return;
        }

        canvas = newNodeCanvas;
    }
Example #7
0
 /// <summary>
 /// Creates and opens a new empty node canvas
 /// </summary>
 public void NewNodeCanvas()
 {
     nodeCanvas = ScriptableObject.CreateInstance<Node_Canvas_Object> ();
     nodeCanvas.nodes = new List<Node> ();
     openedCanvas = "New Canvas";
     openedCanvasPath = "";
 }
Example #8
0
    /// <summary>
    /// Loads the a node canvas from an asset
    /// </summary>
    public void LoadNodeCanvas(string path)
    {
        if (String.IsNullOrEmpty (path))
            return;
        Object[] objects = AssetDatabase.LoadAllAssetsAtPath (path);
        if (objects.Length == 0)
            return;
        Node_Canvas_Object newNodeCanvas = null;

        for (int cnt = 0; cnt < objects.Length; cnt++)
        { // We only have to search for the Node Canvas itself in the mess, because it still hold references to all of it's nodes and their connections
            object obj = objects [cnt];
            if (obj.GetType () == typeof (Node_Canvas_Object))
                newNodeCanvas = obj as Node_Canvas_Object;
        }
        if (newNodeCanvas == null)
            return;
        nodeCanvas = newNodeCanvas;
        //  OnLoad();

        string[] folders = path.Split (new char[] {'/'}, StringSplitOptions.None);
        openedCanvas = folders [folders.Length-1];
        openedCanvasPath = path;

        EditorApplication.OpenScene(nodeCanvas.scenePath);

        Repaint ();
        AssetDatabase.Refresh ();
        DrawSideWindow();
    }