public ConstellationScriptInfos Draw(ConstellationScriptInfos[] scriptsInfos) { GUI.color = Color.white; GUILayout.BeginHorizontal(); foreach (var scriptInfos in scriptsInfos) { var constellationPath = scriptInfos.ScriptPath.Split('/'); var name = constellationPath[constellationPath.Length - 1].Split('.')[0]; if (scriptInfos.IsIstance == true) { GUI.color = Color.yellow; constellationPath = scriptInfos.InstancePath.Split('/'); name = constellationPath[constellationPath.Length - 1].Split('.')[0]; } if (GUILayout.Button(name, "MiniToolbarButton", GUILayout.MaxWidth(125), GUILayout.MinWidth(125))) { return(scriptInfos); } if (GUILayout.Button("X", "MiniToolbarButton", GUILayout.MaxWidth(20), GUILayout.MinWidth(20))) { removeNode = scriptInfos; } GUI.color = Color.grey; GUILayout.Space(10); } GUI.color = Color.white; GUILayout.EndHorizontal(); return(null); }
public ConstellationScriptInfos ConstellationToRemove() { var nodeToRemove = removeNode; removeNode = null; return(nodeToRemove); }
public void SaveInstance(ConstellationScriptInfos scriptInfos) { var newScript = ScriptableObject.CreateInstance <ConstellationBehaviourScript>(); var path = ""; if (scriptInfos.IsIstance) { path = scriptInfos.ScriptPath; } else { return; } if (path == "") { path = EditorUtility.SaveFilePanel("Save Constellation", Application.dataPath, "NewConstellation" + ".asset", "asset"); if (path.Length == 0) { return; } if (path.StartsWith(Application.dataPath)) { path = "Assets" + path.Substring(Application.dataPath.Length); } } AssetDatabase.CreateAsset(newScript, path); SaveAll(); }
public bool CloseOpenedConstellation(ConstellationScriptInfos scriptInfos) { if (scriptInfos == null) { return(false); } EditorData.LastOpenedConstellationPath.Remove(scriptInfos); OpenedScripts.Remove(scriptInfos); //Script = null; return(true); }
public ConstellationScript Recover(ConstellationScriptInfos _scriptInfos) { ConstellationScript t = (ConstellationScript)AssetDatabase.LoadAssetAtPath(_scriptInfos.ScriptPath, typeof(ConstellationScript)); Script = t; if (t != null) { OpenedScripts = new List <ConstellationScriptInfos>(EditorData.LastOpenedConstellationPath); OpenedScripts.Remove(_scriptInfos); OpenedScripts.Insert(0, _scriptInfos); return(t); } else { throw new ScriptNotFoundAtPath(_scriptInfos.ScriptPath); } }
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(); }
public ConstellationScript OpenConstellation(ConstellationScriptInfos _path = null, bool save = true) { ConstellationScriptInfos newScriptInfos; if (_path == null) { newScriptInfos = new ConstellationScriptInfos(EditorUtility.OpenFilePanel("Load constellation", Application.dataPath, "asset"), ConstellationScriptInfos.ConstellationScriptTag.NoTag, false); if (newScriptInfos.ScriptPath.Length == 0) { return(null); } } else { newScriptInfos = _path; } if (newScriptInfos.ScriptPath.StartsWith(Application.dataPath)) { newScriptInfos.ScriptPath = "Assets" + newScriptInfos.ScriptPath.Substring(Application.dataPath.Length); } ConstellationScript t = (ConstellationScript)AssetDatabase.LoadAssetAtPath(newScriptInfos.ScriptPath, typeof(ConstellationScript)); Script = t; if (Script == null) { throw new ScriptNotFoundAtPath(_path.ScriptPath); } OpenedScripts = new List <ConstellationScriptInfos>(EditorData.LastOpenedConstellationPath); var isAlreadyOpened = false; var openedIndex = 0; foreach (var openedScripts in OpenedScripts) { if (openedScripts.ScriptPath == newScriptInfos.ScriptPath) { isAlreadyOpened = true; break; } openedIndex++; } //Debug.Log(openedIndex); if (!isAlreadyOpened) { OpenedScripts.Insert(0, newScriptInfos); } else { OpenedScripts.Remove(OpenedScripts[openedIndex]); OpenedScripts.Insert(0, newScriptInfos); } var name = Path.GetFileNameWithoutExtension(newScriptInfos.ScriptPath.Split('/').Last()); Script.script.Name = name; if (save) { SaveEditorData(); } return(t); }