示例#1
0
        /// <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);
        }
示例#2
0
        //
        // 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);
            }
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
        /// <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;
        }