/// <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(); }
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); }
/// <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; }
/// <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(); }
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; }
/// <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; // OnLoad(); string[] folders = path.Split (new char[] {'/'}, StringSplitOptions.None); openedCanvas = folders [folders.Length-1]; openedCanvasPath = path; EditorApplication.OpenScene(nodeCanvas.scenePath); Repaint (); AssetDatabase.Refresh (); DrawSideWindow(); }