Beispiel #1
0
        private static InkLibrary FindOrCreateLibrary()
        {
            InkLibrary tmpSettings = AssetDatabase.LoadAssetAtPath <InkLibrary>(defaultPath);

            if (tmpSettings == null)
            {
                string[] GUIDs = AssetDatabase.FindAssets("t:" + typeof(InkLibrary).Name);
                if (GUIDs.Length > 0)
                {
                    string path = AssetDatabase.GUIDToAssetPath(GUIDs[0]);
                    tmpSettings = AssetDatabase.LoadAssetAtPath <InkLibrary>(path);
                    if (GUIDs.Length > 1)
                    {
                        for (int i = 1; i < GUIDs.Length; i++)
                        {
                            AssetDatabase.DeleteAsset(AssetDatabase.GUIDToAssetPath(GUIDs[i]));
                        }
                        Debug.LogWarning("More than one InkLibrary was found. Deleted excess libraries.");
                    }
                }
            }
            // If we couldn't find the asset in the project, create a new one.
            if (tmpSettings == null)
            {
                tmpSettings = CreateInkLibrary();
                Debug.Log("Created a new ink library at " + defaultPath + " because one was not found.");
                InkLibrary.Rebuild();
            }
            return(tmpSettings);
        }
Beispiel #2
0
        public static void RecompileAll()
        {
            InkLibrary.Rebuild();
            List <InkFile> masterInkFiles = InkLibrary.GetMasterInkFiles();

            foreach (InkFile masterInkFile in masterInkFiles)
            {
                InkCompiler.CompileInk(masterInkFile);
            }
        }
Beispiel #3
0
 static void OnOpenUnityEditor()
 {
     if (InkLibrary.created)
     {
         InkLibrary.Rebuild();
     }
     else
     {
         InkLibrary.LoadOrCreateInstance();
     }
 }
        public static void RecompileAll()
        {
            InkLibrary.Rebuild();
            List <InkFile> masterInkFiles = InkLibrary.GetMasterInkFiles();

            foreach (InkFile masterInkFile in masterInkFiles)
            {
                if (InkSettings.Instance.compileAutomatically || masterInkFile.compileAutomatically)
                {
                    InkCompiler.CompileInk(masterInkFile);
                }
            }
        }
Beispiel #5
0
        private static InkLibrary FindOrCreateLibrary()
        {
            InkLibrary tmpSettings = FindLibrary();

            // If we couldn't find the asset in the project, create a new one.
            if (tmpSettings == null)
            {
                tmpSettings = CreateInkLibrary();
                Debug.Log("Created a new InkLibrary file at " + defaultPath + " because one was not found.");
                InkLibrary.Rebuild();
            }
            return(tmpSettings);
        }
Beispiel #6
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            if (InkCompiler.compiling)
            {
                Rect r = EditorGUILayout.BeginVertical();
                EditorGUI.ProgressBar(r, InkCompiler.GetEstimatedCompilationProgress(), "Compiling...");
                GUILayout.Space(EditorGUIUtility.singleLineHeight);
                EditorGUILayout.EndVertical();
                GUILayout.Space(EditorGUIUtility.standardVerticalSpacing);
            }
            else
            {
                var filesRequiringRecompile = InkLibrary.GetFilesRequiringRecompile();
                if (filesRequiringRecompile.Any())
                {
                    var files = string.Join("\n", filesRequiringRecompile.Select(x => x.filePath).ToArray());
                    EditorGUILayout.HelpBox("Some Ink files marked to compile automatically are not compiled! Check they don't have compile errors, or else try compiling now.\n" + files, MessageType.Warning);
                }
                else
                {
                    EditorGUILayout.HelpBox("All Ink files marked to compile automatically are compiled", MessageType.Info);
                }
            }
            EditorGUI.BeginDisabledGroup(InkCompiler.compiling);
            if (GUILayout.Button(new GUIContent("Rebuild Library", "Rebuilds the ink library. Do this if you're getting unusual errors")))
            {
                InkLibrary.Rebuild();
            }
            if (GUILayout.Button(new GUIContent("Recompile All", "Recompiles all files marked to compile automatically.")))
            {
                InkEditorUtils.RecompileAll();
            }
            EditorGUI.EndDisabledGroup();

            EditorGUI.BeginDisabledGroup(true);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("inkLibrary"), true);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("pendingCompilationStack"), true);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("compilationStack"), true);
            EditorGUI.EndDisabledGroup();

            if (GUI.changed && target != null)
            {
                EditorUtility.SetDirty(target);
            }
            serializedObject.ApplyModifiedProperties();
        }
Beispiel #7
0
        public override void OnInspectorGUI()
        {
            editor.Repaint();
            serializedObject.Update();
            if (inkFile == null)
            {
                EditorGUILayout.HelpBox("Ink File is not in library.", MessageType.Warning);
                if (GUILayout.Button("Rebuild Library"))
                {
                    InkLibrary.Rebuild();
                    Rebuild();
                }
                return;
            }

            if (InkLibrary.GetCompilationStackItem(inkFile) != null)
            {
                EditorGUILayout.HelpBox("File is compiling...", MessageType.Info);
                return;
            }
            InkFile masterInkFile = inkFile;

            if (inkFile.isMaster)
            {
                DrawMasterFileHeader();
            }
            else
            {
                masterInkFile = InkLibrary.GetInkFileWithFile((DefaultAsset)inkFile.master);
                DrawSubFileHeader(masterInkFile);
            }

            DrawEditAndCompileDates(masterInkFile);
            if (inkFile.isMaster && !editedAfterLastCompile)
            {
                DrawCompileButton(masterInkFile);
            }
            DrawIncludedFiles();

            DrawErrors();
            DrawWarnings();
            DrawTODOList();
            DrawFileContents();

            serializedObject.ApplyModifiedProperties();
        }
Beispiel #8
0
        protected override void OnHeaderGUI()
        {
            GUILayout.BeginHorizontal();
            GUILayout.Space(38f);
            GUILayout.BeginVertical();
            GUILayout.Space(19f);
            GUILayout.BeginHorizontal();

            GUILayoutUtility.GetRect(10f, 10f, 16f, 16f, EditorStyles.layerMaskField);
            GUILayout.FlexibleSpace();


            EditorGUI.BeginDisabledGroup(InkCompiler.compiling);
            if (GUILayout.Button(new GUIContent("Rebuild Library", "Rebuilds the ink library. Do this if you're getting unusual errors"), EditorStyles.miniButton))
            {
                InkLibrary.Rebuild();
            }
            EditorGUI.EndDisabledGroup();

            GUILayout.EndHorizontal();
            GUILayout.EndVertical();
            GUILayout.EndHorizontal();

            Rect lastRect = GUILayoutUtility.GetLastRect();
            Rect rect     = new Rect(lastRect.x, lastRect.y, lastRect.width, lastRect.height);
            Rect iconRect = new Rect(rect.x + 6f, rect.y + 6f, 32f, 32f);

            GUI.DrawTexture(iconRect, InkBrowserIcons.inkFileIconLarge);

            Rect titleRect = new Rect(rect.x + 44f, rect.y + 6f, rect.width - 44f - 38f - 4f, 16f);

            titleRect.yMin -= 2f;
            titleRect.yMax += 2f;
            GUI.Label(titleRect, "Ink Library", EditorStyles.largeLabel);

            Rect infoRect = titleRect;

            infoRect.y += titleRect.height;
            GUI.Label(infoRect, "Caches information about ink files in your project", EditorStyles.miniLabel);
        }
Beispiel #9
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            if (GUILayout.Button(new GUIContent("Rebuild Library", "Rebuilds the ink library. Do this if you're getting unusual errors")))
            {
                InkLibrary.Rebuild();
            }

            if (GUILayout.Button(new GUIContent("Recompile All", "Rebuilds the ink library and recompiles all files.")))
            {
                InkEditorUtils.RecompileAll();
            }

            EditorGUILayout.HelpBox("This file caches information about ink files in your project.", MessageType.Info);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("inkLibrary"), true);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("compilationStack"), true);
            if (GUI.changed && target != null)
            {
                EditorUtility.SetDirty(target);
            }
            serializedObject.ApplyModifiedProperties();
        }
Beispiel #10
0
 public static void RebuildLibrary()
 {
     InkLibrary.Rebuild();
 }
Beispiel #11
0
 static void OnOpenUnityEditor()
 {
     InkLibrary.Rebuild();
 }
        public override void OnInspectorGUI()
        {
            editor.Repaint();
            serializedObject.Update();
            if (inkFile == null)
            {
                EditorGUILayout.HelpBox("Ink File is not in library.", MessageType.Warning);
                if (GUILayout.Button("Rebuild Library"))
                {
                    InkLibrary.Rebuild();
                    Rebuild();
                }
                return;
            }

            if (InkLibrary.GetCompilationStackItem(inkFile) != null)
            {
                EditorGUILayout.HelpBox("File is compiling...", MessageType.Info);
                return;
            }

            InkFile masterInkFile = inkFile.metaInfo.masterInkFileIncludingSelf;

            if (inkFile.metaInfo.isMaster)
            {
                DrawMasterFileHeader();
            }
            else
            {
                DrawSubFileHeader(masterInkFile);
            }

            DrawEditAndCompileDates(masterInkFile);
            if (masterInkFile.metaInfo.hasUnhandledCompileErrors)
            {
                EditorGUILayout.HelpBox("Last compiled failed", MessageType.Error);
            }
            if (masterInkFile.metaInfo.hasErrors)
            {
                EditorGUILayout.HelpBox("Last compiled had errors", MessageType.Error);
            }
            else if (masterInkFile.metaInfo.hasWarnings)
            {
                EditorGUILayout.HelpBox("Last compile had warnings", MessageType.Warning);
            }
            else if (masterInkFile.jsonAsset == null)
            {
                EditorGUILayout.HelpBox("Ink file has not been compiled", MessageType.Warning);
            }
            if (inkFile.metaInfo.requiresCompile && GUILayout.Button("Compile"))
            {
                InkCompiler.CompileInk(masterInkFile);
            }

            DrawIncludedFiles();

            DrawCompileErrors();
            DrawErrors();
            DrawWarnings();
            DrawTODOList();
            DrawFileContents();

            serializedObject.ApplyModifiedProperties();
        }
Beispiel #13
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            EditorGUI.BeginDisabledGroup(InkCompiler.compiling);
            if (GUILayout.Button(new GUIContent("Rebuild Library", "Rebuilds the ink library. Do this if you're getting unusual errors"), EditorStyles.miniButton))
            {
                InkLibrary.Rebuild();
            }
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Toggle("HasLockedUnityCompilation", InkCompiler.hasLockedUnityCompilation);
            if (GUILayout.Button("Unlock"))
            {
                EditorApplication.UnlockReloadAssemblies();
            }
                        #if UNITY_2019_4_OR_NEWER
            if (GUILayout.Button("AllowAutoRefresh"))
            {
                AssetDatabase.AllowAutoRefresh();
            }
                        #endif

            if (InkCompiler.compiling)
            {
                Rect r = EditorGUILayout.BeginVertical();
                EditorGUI.ProgressBar(r, InkCompiler.GetEstimatedCompilationProgress(), "Compiling...");
                GUILayout.Space(EditorGUIUtility.singleLineHeight);
                EditorGUILayout.EndVertical();
                GUILayout.Space(EditorGUIUtility.standardVerticalSpacing);
            }
            else
            {
                var filesRequiringRecompile = InkLibrary.GetFilesRequiringRecompile();
                if (filesRequiringRecompile.Any())
                {
                    var files = string.Join("\n", filesRequiringRecompile.Select(x => x.filePath).ToArray());
                    if (EditorApplication.isPlaying && InkSettings.Instance.delayInPlayMode)
                    {
                        EditorGUILayout.HelpBox("Some Ink files marked to compile on exiting play mode.\n" + files, MessageType.Info);
                    }
                    else
                    {
                        EditorGUILayout.HelpBox("Some Ink files marked to compile automatically are not compiled! Check they don't have compile errors, or else try compiling now.\n" + files, MessageType.Warning);
                    }
                }
                else
                {
                    EditorGUILayout.HelpBox("All Ink files marked to compile automatically are compiled", MessageType.Info);
                }
            }
            EditorGUI.BeginDisabledGroup(InkCompiler.compiling);
            if (GUILayout.Button(new GUIContent("Recompile All", "Recompiles all files marked to compile automatically.")))
            {
                InkEditorUtils.RecompileAll();
            }

            if (EditorApplication.isPlaying && InkSettings.Instance.delayInPlayMode)
            {
                var filesRequiringRecompile = InkLibrary.GetFilesRequiringRecompile();
                if (filesRequiringRecompile.Any())
                {
                    var files = string.Join("\n", filesRequiringRecompile.Select(x => x.filePath).ToArray());
                    if (GUILayout.Button(new GUIContent("Recompile Pending", "Recompiles all files marked to compile on exiting play mode.")))
                    {
                        InkEditorUtils.RecompileAll();
                    }
                }
            }

            EditorGUI.EndDisabledGroup();

            EditorGUI.BeginDisabledGroup(true);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("inkLibrary"), true);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("pendingCompilationStack"), true);
            EditorGUILayout.PropertyField(serializedObject.FindProperty("compilationStack"), true);
            EditorGUI.EndDisabledGroup();

            if (GUILayout.Button(new GUIContent("Clear Compilation Stacks")))
            {
                InkLibrary.ClearCompilationStacks();
            }
            if (GUI.changed && target != null)
            {
                EditorUtility.SetDirty(target);
            }
            serializedObject.ApplyModifiedProperties();
        }
Beispiel #14
0
        public override void OnInspectorGUI()
        {
            editor.Repaint();
            serializedObject.Update();
            if (inkFile == null)
            {
                EditorGUILayout.HelpBox("Ink File is not in library.", MessageType.Warning);
                if (GUILayout.Button("Rebuild Library"))
                {
                    InkLibrary.Rebuild();
                    Rebuild();
                }
                return;
            }

            if (InkCompiler.IsInkFileOnCompilationStack(inkFile))
            {
                EditorGUILayout.HelpBox("File is compiling...", MessageType.Info);
                return;
            }

            if (!inkFile.isMaster)
            {
                EditorGUI.BeginChangeCheck();
                var newCompileAsIfMaster = EditorGUILayout.Toggle(new GUIContent("Compile As If Master File", "This file is included by another ink file. Typically, these files don't want to be compiled, but this option enables them to be for special purposes."), InkSettings.instance.includeFilesToCompileAsMasterFiles.Contains(inkFile.inkAsset));
                if (EditorGUI.EndChangeCheck())
                {
                    if (newCompileAsIfMaster)
                    {
                        InkSettings.instance.includeFilesToCompileAsMasterFiles.Add(inkFile.inkAsset);
                        EditorUtility.SetDirty(InkSettings.instance);
                    }
                    else
                    {
                        InkSettings.instance.includeFilesToCompileAsMasterFiles.Remove(inkFile.inkAsset);
                        EditorUtility.SetDirty(InkSettings.instance);
                    }
                }
                EditorApplication.RepaintProjectWindow();
            }

            if (inkFile.compileAsMasterFile)
            {
                DrawMasterFileHeader();
                DrawEditAndCompileDates(inkFile);
                if (inkFile.hasUnhandledCompileErrors)
                {
                    EditorGUILayout.HelpBox("Last compiled failed", MessageType.Error);
                }
                if (inkFile.hasErrors)
                {
                    EditorGUILayout.HelpBox("Last compiled had errors", MessageType.Error);
                }
                else if (inkFile.hasWarnings)
                {
                    EditorGUILayout.HelpBox("Last compile had warnings", MessageType.Warning);
                }
                else if (inkFile.jsonAsset == null)
                {
                    EditorGUILayout.HelpBox("Ink file has not been compiled", MessageType.Warning);
                }
                if (inkFile.requiresCompile && GUILayout.Button("Compile"))
                {
                    InkCompiler.CompileInk(inkFile);
                }

                DrawCompileErrors();
                DrawErrors();
                DrawWarnings();
                DrawTODOList();
            }
            else
            {
                EditorGUILayout.LabelField("Include File", EditorStyles.boldLabel);
            }

            DrawListOfMasterFiles();
            DrawIncludedFiles();
            DrawFileContents();


            serializedObject.ApplyModifiedProperties();
        }