public void OpenConstellationInstance(Constellation.Constellation constellation, string instanceSourcePath) { var constellationScript = ScriptableObject.CreateInstance <ConstellationScript> (); constellationScript.IsInstance = true; var path = "Assets/Constellation/Editor/EditorData/Temp/" + constellation.Name + "(Instance).asset"; if (path == null || path == "") { Script = null; return; } Script = constellationScript; AssetDatabase.CreateAsset(constellationScript, path); var nodes = constellation.GetNodes(); var links = constellation.GetLinks(); if (EditorData.CurrentInstancePath == null) { EditorData.CurrentInstancePath = new List <ConstellationInstanceObject> (); } currentInstancePath = new List <ConstellationInstanceObject> (EditorData.CurrentInstancePath); var newInstanceObject = new ConstellationInstanceObject(path, instanceSourcePath); currentInstancePath.Add(newInstanceObject); currentPath = new List <string> (EditorData.LastOpenedConstellationPath); if (!currentPath.Contains(path)) { currentPath.Insert(0, path); } else { currentPath.Remove(path); currentPath.Insert(0, path); } foreach (var node in nodes) { Script.AddNode(node); } foreach (var link in links) { Script.AddLink(link); } SaveEditorData(); }
public void OpenConstellationInstance <T> (Constellation.Constellation constellation, string instanceSourcePath) where T : ConstellationScript { var constellationScript = ScriptableObject.CreateInstance <T>(); constellationScript.IsInstance = true; constellationScript.CanChangeType = false; var path = "Assets/Constellation/Editor/EditorData/Temp/" + constellation.Name + "(Instance).asset"; Script = constellationScript; AssetDatabase.CreateAsset(constellationScript, path); var nodes = constellation.GetNodes(); var links = constellation.GetLinks(); var newInstanceObject = new ConstellationScriptInfos(instanceSourcePath, ConstellationScriptInfos.ConstellationScriptTag.NoTag, true, path); OpenedScripts = new List <ConstellationScriptInfos>(EditorData.LastOpenedConstellationPath); if (!OpenedScripts.Contains(newInstanceObject)) { OpenedScripts.Insert(0, newInstanceObject); } else { OpenedScripts.Remove(newInstanceObject); OpenedScripts.Insert(0, newInstanceObject); } foreach (var node in nodes) { Script.AddNode(node); } foreach (var link in links) { Script.AddLink(link); } SaveEditorData(); }