void DrawEditor() { editorArea.Begin(); editorScrollPosition = GUILayout.BeginScrollView(editorScrollPosition); GUI.SetNextControlName(textAreaControlName); string text = GUILayout.TextArea(currentFile != null ? currentFile.source : "No file loaded..", GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); TextEditor editor = (TextEditor)GUIUtility.GetStateObject(typeof(TextEditor), GUIUtility.keyboardControl); if (GUIUtility.keyboardControl == editor.controlID && Event.current.Equals(Event.KeyboardEvent("tab"))) { #if NEWVERSION if (text.Length > editor.cursorIndex) { text = text.Insert(editor.cursorIndex, "\t"); editor.cursorIndex++; editor.selectIndex = editor.cursorIndex; } #else if (text.Length > editor.pos) { text = text.Insert(editor.pos, "\t"); editor.pos++; editor.selectPos = editor.pos; } #endif Event.current.Use(); } if (currentFile != null) { currentFile.source = text; } GUILayout.EndScrollView(); editorArea.End(); }
public void DrawSceneTree() { sceneTreeArea.Begin(); if (searchDisplayString != "") { GUI.contentColor = Color.green; GUILayout.Label(searchDisplayString); GUI.contentColor = Color.white; } sceneTreeScrollPosition = GUILayout.BeginScrollView(sceneTreeScrollPosition); var gameObjects = sceneRoots.Keys.ToArray(); if (ModTools.Instance.config.sceneExplorerSortAlphabetically) { try { Array.Sort(gameObjects, (o, o1) => { if (o == null || o.name == null) { return(1); } if (o1 == null || o1.name == null) { return(-1); } return(o.name.CompareTo(o1.name)); }); } catch (Exception e) { UnityEngine.Debug.LogException(e); } } foreach (var obj in gameObjects) { GUIRecursiveTree.OnSceneTreeRecursive(gameObject, state, new ReferenceChain().Add(obj), obj); } GUILayout.EndScrollView(); sceneTreeArea.End(); }
public void DrawHeader() { headerArea.Begin(); if (headerExpanded) { DrawExpandedHeader(); } else { DrawCompactHeader(); } headerArea.End(); }
void DrawHeader() { headerArea.Begin(); GUILayout.BeginHorizontal(); GUILayout.Label("Scripts are stored in project workspace. To add a script create a new .cs file in workspace and click 'Reload'", GUILayout.ExpandWidth(false)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Project workspace:", GUILayout.ExpandWidth(false)); var newProjectWorkspacePath = GUILayout.TextField(projectWorkspacePath, GUILayout.ExpandWidth(true)); if (!newProjectWorkspacePath.Equals(projectWorkspacePath)) { projectWorkspacePath = newProjectWorkspacePath.Trim(); ModTools.Instance.config.scriptEditorWorkspacePath = projectWorkspacePath; ModTools.Instance.SaveConfig(); } if (GUILayout.Button("Reload", GUILayout.Width(100))) { ReloadProjectWorkspace(); } GUILayout.EndHorizontal(); projectFilesScrollPosition = GUILayout.BeginScrollView(projectFilesScrollPosition); GUILayout.BeginHorizontal(); foreach (var file in projectFiles) { if (GUILayout.Button(Path.GetFileName(file.path), GUILayout.ExpandWidth(false))) { currentFile = file; } } GUILayout.EndHorizontal(); GUILayout.EndScrollView(); headerArea.End(); }
public void DrawComponent() { componentArea.Begin(); componentScrollPosition = GUILayout.BeginScrollView(componentScrollPosition); if (state.currentRefChain != null) { try { GUIReflect.OnSceneTreeReflect(state, state.currentRefChain, state.currentRefChain.Evaluate()); } catch (Exception e) { Debug.LogException(e); state.currentRefChain = null; } } GUILayout.EndScrollView(); componentArea.End(); }
void DrawFooter() { footerArea.Begin(); GUILayout.BeginHorizontal(); if (currentMod != null) { GUI.enabled = false; } if (GUILayout.Button("Compile")) { string dllPath; if (ScriptCompiler.CompileSource(projectFiles, out dllPath)) { Log.Message("Source compiled to \"" + dllPath + "\""); } else { Log.Error("Failed to compile script!"); } } if (GUILayout.Button("Run")) { string errorMessage; if (ScriptCompiler.RunSource(projectFiles, out errorMessage, out currentMod)) { Log.Message("Running IModEntryPoint.OnModLoaded()"); try { currentMod.OnModLoaded(); } catch (Exception ex) { Log.Error($"Exception while calling IModEntryPoint.OnModLoaded() - {ex.Message}"); } } else { lastError = errorMessage; Log.Error("Failed to compile or run source, reason: " + errorMessage); } } GUI.enabled = false; if (currentMod != null) { GUI.enabled = true; } if (GUILayout.Button("Stop")) { Log.Message("Running IModEntryPoint.OnModUnloaded()"); try { currentMod.OnModUnloaded(); } catch (Exception ex) { Log.Error($"Exception while calling IModEntryPoint.OnModUnloaded() - {ex.Message}"); } currentMod = null; } GUI.enabled = true; GUILayout.Label("Last error: " + lastError); GUILayout.FlexibleSpace(); if (currentFile == null) { GUI.enabled = false; } if (GUILayout.Button("Save")) { try { SaveProjectFile(currentFile); } catch (Exception ex) { lastError = ex.Message; return; } lastError = ""; } GUI.enabled = true; if (GUILayout.Button("Save all")) { SaveAllProjectFiles(); } GUILayout.EndHorizontal(); footerArea.End(); }
void DrawCommandLineArea() { commandLineArea.Begin(); GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true)); GUILayout.BeginVertical(GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(false)); commandLineScrollPosition = GUILayout.BeginScrollView(commandLineScrollPosition, false, false, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(false)); GUI.SetNextControlName("ModToolsConsoleCommandLine"); commandHistory[currentCommandHistoryIndex] = GUILayout.TextArea(commandHistory[currentCommandHistoryIndex], GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); if (commandHistory[currentCommandHistoryIndex].Trim().Length == 0) { GUI.enabled = false; } GUILayout.EndScrollView(); GUILayout.EndVertical(); GUILayout.BeginVertical(GUILayout.ExpandWidth(false)); GUILayout.BeginHorizontal(); if (GUILayout.Button("Run", GUILayout.ExpandWidth(false))) { RunCommandLine(); } GUI.enabled = true; if (currentCommandHistoryIndex == 0) { GUI.enabled = false; } if (GUILayout.Button("↑", GUILayout.ExpandWidth(false))) { currentCommandHistoryIndex--; } GUI.enabled = true; if (currentCommandHistoryIndex >= commandHistory.Count - 1) { GUI.enabled = false; } if (GUILayout.Button("↓", GUILayout.ExpandWidth(false))) { currentCommandHistoryIndex++; } GUI.enabled = true; GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.EndHorizontal(); commandLineArea.End(); // refocus the command line area after enter has been pressed if (focusCommandLineArea) { GUI.FocusControl("ModToolsConsoleCommandLine"); focusCommandLineArea = false; } }
void DrawConsole() { userNotifications = UserNotifications.GetNotifications(); consoleArea.Begin(); consoleScrollPosition = GUILayout.BeginScrollView(consoleScrollPosition); foreach (var item in userNotifications) { GUILayout.BeginHorizontal(skin.box); GUI.contentColor = Color.blue; GUILayout.Label(item.Value); GUI.contentColor = Color.white; if (GUILayout.Button("Hide")) { UserNotifications.HideNotification(item.Key); } GUILayout.EndHorizontal(); } ConsoleMessage[] messages = null; lock (historyLock) { messages = history.ToArray(); } foreach (ConsoleMessage item in messages) { GUILayout.BeginHorizontal(skin.box); string msg = config.consoleFormatString.Replace("{{type}}", item.type.ToString()) .Replace("{{caller}}", item.caller) .Replace("{{message}}", item.message); switch (item.type) { case LogType.Log: GUI.contentColor = config.consoleMessageColor; break; case LogType.Warning: GUI.contentColor = config.consoleWarningColor; break; case LogType.Error: GUI.contentColor = config.consoleErrorColor; break; case LogType.Assert: case LogType.Exception: GUI.contentColor = config.consoleExceptionColor; break; } GUILayout.Label(msg); GUILayout.FlexibleSpace(); if (item.count > 1) { GUI.contentColor = orangeColor; if (item.count > 1024) { GUI.contentColor = Color.red; } GUILayout.Label(item.count.ToString(), skin.box); } else { GUILayout.Label(""); } GUI.contentColor = Color.white; if (item.trace != null) { if (GUILayout.Button("Stack trace", GUILayout.ExpandWidth(false))) { var viewer = StackTraceViewer.CreateStackTraceViewer(item.trace); var mouse = Input.mousePosition; mouse.y = Screen.height - mouse.y; viewer.rect.position = mouse; viewer.visible = true; } } GUILayout.EndHorizontal(); } GUILayout.EndScrollView(); consoleArea.End(); }