/// <summary> /// Makes a new Vubbi Script. /// </summary> /// <param name="path">Path. Starting with Assets/... without filename!</param> /// <param name="name">Name. Filename without extension OR full path starting with Assets/... in case path is null. If null, a default name is chosen.</param> /// <param name="openEditor">If set to <c>true</c> opens the Vubbi editor after creation.</param> public static VisualBlockScript CreateAsset(string path, string name, bool openEditor) { VisualBlockScript asset = ScriptableObject.CreateInstance <VisualBlockScript> (); name = name != null ? name : "NewVubbiScript"; // TODO: DOES NOT WORK CORRECTLY - add spaces in the name => which is not allowed for scripts string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath((path != null?path + "/":"") + name + ".asset"); AssetDatabase.CreateAsset(asset, assetPathAndName); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); EditorUtility.FocusProjectWindow(); Selection.activeObject = asset; // TODO: write the C# file already also? if (openEditor) { // Open the file in the editor! OpenAssetFile(assetPathAndName); } return(asset); }
// // Data migration v2 -> v3 // // REMOVED FROM MENU!! => [MenuItem("Help/Migrate Scratchity v0.1 & v0.2 Data", false, 500)] public static void MigrationData() { string oldDataDir = Path.Combine(UnityEngine.Application.dataPath, "../BlockScriptData"); string scriptDir = Path.Combine(UnityEngine.Application.dataPath, "Scripts"); if (Directory.Exists(oldDataDir)) { string[] files = Directory.GetFiles(oldDataDir); foreach (string file in files) { if (".xml".Equals(Path.GetExtension(file)) && ".vcs".Equals(Path.GetExtension(Path.GetFileNameWithoutExtension(file)))) { UnityEngine.Debug.Log("Migrating file: " + file); string actualname = Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(file)); string filecontent = File.ReadAllText(file); VisualBlockScript dataObj = VubbiFileHandler.CreateAsset("Assets/Scripts", actualname, false); dataObj.data = filecontent; EditorUtility.SetDirty(dataObj); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } } // For safety reasons, do NOT DELETE OLD DATA from before migration! // Directory.Delete (oldDataDir, true); } }
/// <summary> /// Gets the content of the Vubbi script. /// </summary> /// <returns>The blocknity script content.</returns> /// <param name="path">Path. Starting with Assets/... without extension.</param> public static string GetVubbiScriptContent(string path) { VisualBlockScript script = AssetDatabase.LoadAssetAtPath <VisualBlockScript> (path + ".asset"); if (script == null) { return(""); } else { return(script.data); } }
/// <summary> /// Updates the content of the Vubbi script. /// </summary> /// <param name="path">Path. Starting with Assets/... without extension.</param> /// <param name="content">Content.</param> public static void UpdateVubbiScriptContent(string path, string content) { VisualBlockScript script = AssetDatabase.LoadAssetAtPath <VisualBlockScript> (path + ".asset"); if (script == null) { CreateAsset(null, path, false); script = AssetDatabase.LoadAssetAtPath <VisualBlockScript> (path + ".asset"); } script.data = content; EditorUtility.SetDirty(script); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); EditorUtility.FocusProjectWindow(); Selection.activeObject = script; }