private bool DrawDetailsEnvironment() { bool bChanged = false; { string oldPath = HEU_PluginSettings.HoudiniEngineEnvFilePath; string fileExt = "env"; using (new EditorGUILayout.HorizontalScope()) { string newPath = EditorGUILayout.DelayedTextField(new GUIContent("Houdini Env File", "Assets/ relative path to unity_houdini.env file containing environment paths"), oldPath); GUIStyle buttonStyle = HEU_EditorUI.GetNewButtonStyle_MarginPadding(0, 0); if (GUILayout.Button("...", buttonStyle, GUILayout.Width(30), GUILayout.Height(18))) { string openFilePath = UnityEditor.EditorUtility.OpenFilePanel("Select Houdini Env file", newPath, fileExt); if (!string.IsNullOrEmpty(openFilePath)) { newPath = openFilePath; } } if (!newPath.Equals(oldPath)) { HEU_PluginSettings.HoudiniEngineEnvFilePath = newPath; bChanged = true; } GUILayout.Space(5); if (GUILayout.Button(_refreshContent, buttonStyle, GUILayout.Width(40), GUILayout.Height(18))) { HEU_PluginStorage.Instance.LoadAssetEnvironmentPaths(); } } } HEU_EditorUI.DrawSeparator(); Dictionary<string, string> envMap = HEU_PluginStorage.Instance.GetEnvironmentPathMap(); if (envMap == null) { HEU_EditorUI.DrawHeadingLabel("No environment mapped paths found!"); } else { HEU_EditorUI.DrawHeadingLabel("Enviornment Mapped Paths:"); EditorGUILayout.LabelField("The following mappings will be applied to assets loaded from outside the Assets/ folder."); foreach (KeyValuePair<string, string> pair in envMap) { EditorGUILayout.LabelField(string.Format("{0} = {1}", pair.Key, pair.Value)); } HEU_EditorUI.DrawSeparator(); } return bChanged; }
public static void DrawFilePathWithDialog(string labelName, SerializedProperty filePathProperty) { EditorGUILayout.BeginHorizontal(); GUIContent labelContent = new GUIContent(labelName); EditorGUILayout.DelayedTextField(filePathProperty, labelContent, GUILayout.ExpandWidth(true)); GUIStyle buttonStyle = HEU_EditorUI.GetNewButtonStyle_MarginPadding(0, 0); if (GUILayout.Button("...", buttonStyle, GUILayout.Width(30), GUILayout.Height(18))) { string filePattern = "*.*"; string newPath = EditorUtility.OpenFilePanel("Select " + labelName, filePathProperty.stringValue, filePattern); if(newPath != null && !string.IsNullOrEmpty(newPath)) { filePathProperty.stringValue = HEU_Platform.GetValidRelativePath(newPath); ; } } EditorGUILayout.EndHorizontal(); }
public override void OnInspectorGUI() { if (_geoSync == null) { AcquireTarget(); } using (new EditorGUILayout.VerticalScope()) { bool bSyncing = _geoSync.IsSyncing; EditorGUILayout.LabelField(_fileLabelContent); using (new EditorGUILayout.HorizontalScope()) { _geoSync._filePath = EditorGUILayout.DelayedTextField(_geoSync._filePath); // TODO: add field for output cache directory GUIStyle buttonStyle = HEU_EditorUI.GetNewButtonStyle_MarginPadding(0, 0); if (GUILayout.Button("...", buttonStyle, GUILayout.Width(30), GUILayout.Height(18))) { string filePattern = "*.bgeo;*.bgeo.sc"; _geoSync._filePath = EditorUtility.OpenFilePanel("Select File", _geoSync._filePath, filePattern); } } HEU_EditorUI.DrawSeparator(); if (bSyncing) { EditorGUILayout.LabelField(_statusSyncContent); if (GUILayout.Button(_stopContent)) { _geoSync.StopSync(); } } else { EditorGUILayout.LabelField(_statusIdleContent); using (new EditorGUILayout.HorizontalScope()) { bool bLoaded = _geoSync.IsLoaded(); if (GUILayout.Button(_syncContent)) { _geoSync.StartSync(); } //GUILayout.FlexibleSpace(); using (new EditorGUI.DisabledScope(!bLoaded)) { if (GUILayout.Button(_unloadContent)) { _geoSync.Unload(); } } } } if (!string.IsNullOrEmpty(_geoSync._logStr)) { EditorGUILayout.LabelField("Log: " + _geoSync._logStr); } } }
private bool DrawDetailsGeneral() { bool bChanged = false; { string oldPath = HEU_PluginSettings.AssetCachePath; EditorGUILayout.LabelField(new GUIContent("Houdini Asset Cache Path:", "Files generated by this plugin will be stored in this folder path relative to Assets/.")); string newPath = EditorGUILayout.TextField("", oldPath); if (!newPath.Equals(oldPath)) { HEU_PluginSettings.AssetCachePath = newPath; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { string oldPath = HEU_PluginSettings.HoudiniInstallPath; string fileExt = ""; EditorGUILayout.LabelField(new GUIContent("Override Houdini Install Path:", "Set a specific Houdini installation to use for this plugin. The plugin's default version of Houdini will be ignored.")); using (new EditorGUILayout.HorizontalScope()) { string newPath = EditorGUILayout.DelayedTextField(oldPath); GUIStyle buttonStyle = HEU_EditorUI.GetNewButtonStyle_MarginPadding(0, 0); if (GUILayout.Button("...", buttonStyle, GUILayout.Width(30), GUILayout.Height(18))) { string panelMsg = "Select Houdini Install Path"; #if UNITY_EDITOR_OSX panelMsg += " (.app)"; #endif string openFilePath = UnityEditor.EditorUtility.OpenFolderPanel(panelMsg, newPath, fileExt); if (!string.IsNullOrEmpty(openFilePath)) { newPath = openFilePath; } } if (!newPath.Equals(oldPath)) { string msgPath = !string.IsNullOrEmpty(newPath) ? newPath : HEU_Platform.GetHoudiniEngineDefaultPath(); string confirmMsg = string.Format( "Change the Houdini install path?\n" + " New path: {0}\n\n" + "You will need to restart Unity to use this path!", msgPath); bool result = HEU_EditorUtility.DisplayDialog("Houdini Install Path Changed", confirmMsg, "Confirm", "Cancel"); if (result) { HEU_PluginSettings.HoudiniInstallPath = newPath; bChanged = true; } } } #if UNITY_EDITOR_OSX GUIStyle labelStyle = new GUIStyle(GUI.skin.label); labelStyle.wordWrap = true; EditorGUILayout.LabelField(" On macOS, you'll need to select the path to the .app folder.\n E.g. /Applications/Houdini/Houdini16.5.616/Houdini Core 16.5.616.app", labelStyle); #endif } HEU_EditorUI.DrawSeparator(); { string oldPath = HEU_PluginSettings.HoudiniDebugLaunchPath; string fileExt = ""; EditorGUILayout.LabelField(new GUIContent("Houdini Debug Executable:", "Set Houdini executable to launch when opening debug scenes.")); using (new EditorGUILayout.HorizontalScope()) { string newPath = EditorGUILayout.DelayedTextField(oldPath); GUIStyle buttonStyle = HEU_EditorUI.GetNewButtonStyle_MarginPadding(0, 0); if (GUILayout.Button("...", buttonStyle, GUILayout.Width(30), GUILayout.Height(18))) { string panelMsg = "Select Houdini Executable"; #if UNITY_EDITOR_OSX panelMsg += " (.app)"; #endif string openFilePath = UnityEditor.EditorUtility.OpenFilePanel(panelMsg, newPath, fileExt); if (!string.IsNullOrEmpty(openFilePath)) { newPath = openFilePath; } } if (!newPath.Equals(oldPath)) { HEU_PluginSettings.HoudiniDebugLaunchPath = newPath; bChanged = true; } } #if UNITY_EDITOR_OSX GUIStyle labelStyle = new GUIStyle(GUI.skin.label); labelStyle.wordWrap = true; EditorGUILayout.LabelField(" On macOS, you'll need to select the path to the .app folder.\n E.g. /Applications/Houdini/Houdini16.5.616/Houdini Core 16.5.616.app", labelStyle); #endif } HEU_EditorUI.DrawSeparator(); { bool oldValue = HEU_PluginSettings.UseFullPathNamesForOutput; bool newValue = HEU_EditorUI.DrawToggleLeft(oldValue, "Use Full Path Names For Output"); if (!newValue.Equals(oldValue)) { HEU_PluginSettings.UseFullPathNamesForOutput = newValue; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { bool oldValue = HEU_PluginSettings.SetCurrentThreadToInvariantCulture; bool newValue = HEU_EditorUI.DrawToggleLeft(oldValue, "Set Current Thread To Invariant Culture", "Enabling this sets to use InvariantCutulre which fixes locale-specific parsing issues such as using comma instead of dot for decimals."); if (!newValue.Equals(oldValue)) { HEU_PluginSettings.SetCurrentThreadToInvariantCulture = newValue; bChanged = true; } } return bChanged; }
private bool DrawDetailsGeneral() { bool bChanged = false; { float oldValue = HEU_PluginSettings.PinSize; float newValue = EditorGUILayout.DelayedFloatField("Pin Size", oldValue); if (newValue != oldValue) { HEU_PluginSettings.PinSize = newValue; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { Color oldValue = HEU_PluginSettings.PinColor; Color newValue = EditorGUILayout.ColorField("Pin Color", oldValue); if (newValue != oldValue) { HEU_PluginSettings.PinColor = newValue; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { float oldValue = HEU_PluginSettings.ImageGamma; float newValue = EditorGUILayout.DelayedFloatField("Texture Gamma", oldValue); if (newValue != oldValue) { HEU_PluginSettings.ImageGamma = newValue; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { Color oldValue = HEU_PluginSettings.LineColor; Color newValue = EditorGUILayout.ColorField("Line Color", oldValue); if (newValue != oldValue) { HEU_PluginSettings.LineColor = newValue; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { string oldPath = HEU_PluginSettings.AssetCachePath; string newPath = EditorGUILayout.TextField("Houdini Asset Cache Path", oldPath); if (!newPath.Equals(oldPath)) { HEU_PluginSettings.AssetCachePath = newPath; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { bool oldValue = HEU_PluginSettings.UseFullPathNamesForOutput; bool newValue = HEU_EditorUI.DrawToggleLeft(oldValue, "Use Full Path Names For Output"); if (!newValue.Equals(oldValue)) { HEU_PluginSettings.UseFullPathNamesForOutput = newValue; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { bool oldValue = HEU_PluginSettings.SetCurrentThreadToInvariantCulture; bool newValue = HEU_EditorUI.DrawToggleLeft(oldValue, "Set Current Thread To Invariant Culture", "Enabling this sets to use InvariantCutulre which fixes locale-specific parsing issues such as using comma instead of dot for decimals."); if (!newValue.Equals(oldValue)) { HEU_PluginSettings.SetCurrentThreadToInvariantCulture = newValue; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { string oldPath = HEU_PluginSettings.HoudiniDebugLaunchPath; string fileExt = ""; EditorGUILayout.LabelField(new GUIContent("Houdini Debug Executable:", "Set Houdini executable to launch when opening debug scenes.")); using (new EditorGUILayout.HorizontalScope()) { string newPath = EditorGUILayout.DelayedTextField(oldPath); GUIStyle buttonStyle = HEU_EditorUI.GetNewButtonStyle_MarginPadding(0, 0); if (GUILayout.Button("...", buttonStyle, GUILayout.Width(30), GUILayout.Height(18))) { string panelMsg = "Select Houdini Executable"; #if UNITY_EDITOR_OSX panelMsg += " (.app)"; #endif string openFilePath = UnityEditor.EditorUtility.OpenFilePanel(panelMsg, newPath, fileExt); if (!string.IsNullOrEmpty(openFilePath)) { newPath = openFilePath; } } if (!newPath.Equals(oldPath)) { HEU_PluginSettings.HoudiniDebugLaunchPath = newPath; bChanged = true; } } #if UNITY_EDITOR_OSX GUIStyle labelStyle = new GUIStyle(GUI.skin.label); labelStyle.wordWrap = true; EditorGUILayout.LabelField(" On macOS, you'll need to select the path to the .app folder.\n E.g. /Applications/Houdini/Houdini16.5.616/Houdini Core 16.5.616.app", labelStyle); #endif } return bChanged; }
private bool DrawDetailsGeneral() { bool bChanged = false; { float oldValue = HEU_PluginSettings.PinSize; float newValue = EditorGUILayout.DelayedFloatField("Pin Size", oldValue); if (newValue != oldValue) { HEU_PluginSettings.PinSize = newValue; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { Color oldValue = HEU_PluginSettings.PinColor; Color newValue = EditorGUILayout.ColorField("Pin Color", oldValue); if (newValue != oldValue) { HEU_PluginSettings.PinColor = newValue; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { float oldValue = HEU_PluginSettings.ImageGamma; float newValue = EditorGUILayout.DelayedFloatField("Texture Gamma", oldValue); if (newValue != oldValue) { HEU_PluginSettings.ImageGamma = newValue; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { Color oldValue = HEU_PluginSettings.LineColor; Color newValue = EditorGUILayout.ColorField("Line Color", oldValue); if (newValue != oldValue) { HEU_PluginSettings.LineColor = newValue; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { string oldPath = HEU_PluginSettings.HoudiniEngineEnvFilePath; string fileExt = "env"; using (new EditorGUILayout.HorizontalScope()) { string newPath = EditorGUILayout.DelayedTextField(new GUIContent("Houdini Env File"), oldPath); GUIStyle buttonStyle = HEU_EditorUI.GetNewButtonStyle_MarginPadding(0, 0); if (GUILayout.Button("...", buttonStyle, GUILayout.Width(30), GUILayout.Height(18))) { string openFilePath = UnityEditor.EditorUtility.OpenFilePanel("Select Houdini Env file", newPath, fileExt); if(!string.IsNullOrEmpty(openFilePath)) { newPath = openFilePath; } } if (!newPath.Equals(oldPath)) { HEU_PluginSettings.HoudiniEngineEnvFilePath = newPath; bChanged = true; } } } HEU_EditorUI.DrawSeparator(); { string oldPath = HEU_PluginSettings.AssetCachePath; string newPath = EditorGUILayout.TextField("Houdini Asset Cache Path", oldPath); if (!newPath.Equals(oldPath)) { HEU_PluginSettings.AssetCachePath = newPath; bChanged = true; } } HEU_EditorUI.DrawSeparator(); { bool oldValue = HEU_PluginSettings.UseFullPathNamesForOutput; bool newValue = HEU_EditorUI.DrawToggleLeft(oldValue, "Use Full Path Names For Output"); if (!newValue.Equals(oldValue)) { HEU_PluginSettings.UseFullPathNamesForOutput = newValue; bChanged = true; } } return bChanged; }
public void OnGUI() { if (!_initializedUI) { // Creating of UI elements must happen in OnGUI InitializeUIElements(); } bool bReloadTools = false; int selectedIndex = -1; Color originalBGColor = GUI.backgroundColor; using (new EditorGUILayout.VerticalScope()) { using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox)) { if (HEU_ShelfTools._toolsLoaded) { int numTools = HEU_ShelfTools._tools.Count; using (EditorGUILayout.ScrollViewScope scroll = new EditorGUILayout.ScrollViewScope(_toolButtonScrollPos)) { if (numTools > 0) { int numXElements = numTools < _toolGridXElements ? numTools : _toolGridXElements; selectedIndex = GUILayout.SelectionGrid(-1, _guiContents, numXElements, _toolGridStyle); } else { EditorGUILayout.LabelField("No tools found!"); } _toolButtonScrollPos = scroll.scrollPosition; } } } HEU_EditorUI.DrawSeparator(); using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox)) { _folderFoldout = EditorGUILayout.Foldout(_folderFoldout, "TOOLS FOLDERS"); if (_folderFoldout) { bool bChanged = false; HEU_EditorUI.DrawSeparator(); float folderLineHeight = 24; // Draw folder list. If user changes, then re-populate. int numFolders = _toolsDirectories.Count; for (int i = 0; i < numFolders; ++i) { GUI.backgroundColor = i % 2 == 0 ? FolderColorEven : FolderColorOdd; using (new EditorGUILayout.HorizontalScope(_folderStyle, GUILayout.Height(folderLineHeight))) { GUIStyle buttonStyle = HEU_EditorUI.GetNewButtonStyle_MarginPadding(0, 0); buttonStyle.alignment = TextAnchor.MiddleCenter; GUI.backgroundColor = Color.red; if (GUILayout.Button("X", buttonStyle, GUILayout.Width(30), GUILayout.Height(folderLineHeight))) { _toolsDirectories.RemoveAt(i); bChanged = true; break; } GUI.backgroundColor = i % 2 == 0 ? FolderColorEven : FolderColorOdd; GUIStyle labelStyle = new GUIStyle(GUI.skin.label); labelStyle.alignment = TextAnchor.MiddleLeft; EditorGUILayout.LabelField(_toolsDirectories[i], labelStyle, GUILayout.Height(folderLineHeight)); } HEU_EditorUI.DrawSeparator(); } GUI.backgroundColor = originalBGColor; HEU_EditorUI.DrawSeparator(); using (new EditorGUILayout.HorizontalScope()) { if (GUILayout.Button(_reloadButton, _buttonStyle, GUILayout.MaxWidth(_buttonWidth), GUILayout.MaxHeight(_buttonHeight))) { bReloadTools = true; } if (GUILayout.Button(_addButton, _buttonStyle, GUILayout.MaxWidth(_buttonWidth), GUILayout.MaxHeight(_buttonHeight))) { string openFilePath = UnityEditor.EditorUtility.OpenFolderPanel("Select Tools Folder", "", ""); if (!string.IsNullOrEmpty(openFilePath)) { _toolsDirectories.Add(openFilePath); bChanged = true; } } if (GUILayout.Button(_clearButton, _buttonStyle, GUILayout.MaxWidth(_buttonWidth), GUILayout.MaxHeight(_buttonHeight))) { _toolsDirectories.Clear(); bChanged = true; } } if (bChanged) { HEU_PluginSettings.HEngineToolsUserFolders = _toolsDirectories; bReloadTools = true; } GUI.backgroundColor = originalBGColor; } } if (bReloadTools) { // Change of UI should happend at end after all drawing LoadJsonTools(); } else if(selectedIndex >= 0) { // User selected a tool if(selectedIndex < HEU_ShelfTools._tools.Count) { ProcessUserSelection(selectedIndex); } } } }