void DoSnapButtons(Rect rect) { using (new EditorGUI.DisabledScope(!EditorSnapSettings.activeToolSupportsGridSnap)) { var snap = EditorSnapSettings.gridSnapEnabled; var icon = snap ? Styles.snapToGridIcons[1] : Styles.snapToGridIcons[0]; rect = EditorToolGUI.GetThickArea(rect); EditorSnapSettings.gridSnapEnabled = GUI.Toggle(rect, snap, icon, Styles.command); } }
void DoToolButtons(Rect rect) { const int builtinIconsLength = 6; // Handle temporary override with ALT GUI.changed = false; int displayTool = Tools.viewToolActive ? 0 : (int)Tools.current; for (int i = 1; i < builtinIconsLength; i++) { s_ShownToolIcons[i] = s_ToolIcons[i - 1 + (i == displayTool ? s_ShownToolIcons.Length - 1 : 0)]; s_ShownToolIcons[i].tooltip = s_ToolIcons[i - 1].tooltip; } var lastCustomTool = EditorToolContext.GetLastCustomTool(); if (lastCustomTool != null) { s_ShownToolIcons[builtinIconsLength] = lastCustomTool.toolbarIcon ?? s_CustomToolIcon; } else { s_ShownToolIcons[builtinIconsLength] = s_CustomToolIcon; } s_ShownToolIcons[0] = s_ViewToolIcons[(int)Tools.viewTool + (displayTool == 0 ? s_ViewToolOnOffset : 0)]; displayTool = GUI.Toolbar(rect, displayTool, s_ShownToolIcons, s_ToolControlNames, Styles.command, GUI.ToolbarButtonSize.FitToContents); if (GUI.changed) { var evt = Event.current; if (displayTool == (int)Tool.Custom && ( EditorToolContext.GetLastCustomTool() == null || evt.button == 1 || (evt.button == 0 && evt.modifiers == EventModifiers.Alt)) ) { EditorToolGUI.DoToolContextMenu(); } else { Tools.current = (Tool)displayTool; Tools.ResetGlobalHandleRotation(); } } }
void DoToolSettings(Rect rect) { if (toolSettingsGui != null) { toolSettingsGui(rect); return; } const float pivotButtonsWidth = 128; rect.width = pivotButtonsWidth; rect = EditorToolGUI.GetThinArea(rect); EditorToolGUI.DoBuiltinToolSettings(rect, Styles.buttonLeft, Styles.buttonRight); }
public override void OnInspectorGUI() { var labelWidth = Mathf.Max(EditorGUIUtility.labelWidth, EditorStyles.label.CalcSize(m_HandlePositionAndRotation).x + k_Padding); Rect m_Rect = new Rect(k_Padding, k_Padding, labelWidth, EditorGUIUtility.singleLineHeight); m_Rect = EditorToolGUI.GetThinArea(m_Rect); GUI.Label(m_Rect, m_HandlePositionAndRotation); m_Rect.x += m_Rect.width; m_Rect.width = k_PivotButtonsWidth; m_Rect = EditorToolGUI.GetThinArea(m_Rect); EditorToolGUI.DoBuiltinToolSettings(m_Rect); }
void OnPreviewPackagesInUseGUI(bool useIcon, float width) { GUILayout.Space(k_Space); GUILayout.BeginVertical(GUILayout.Width(width), GUILayout.ExpandWidth(false)); { GUILayout.FlexibleSpace(); var dropDownCustomColor = new GUIStyle(Styles.previewPackageInUseDropdown); var content = useIcon ? Styles.previewPackageIcon : Styles.previewPackageContent; var rectPos = GUILayoutUtility.GetRect(content, Styles.previewPackageInUseDropdown); if (EditorGUI.DropdownButton(rectPos, content, FocusType.Passive, dropDownCustomColor)) { ShowPreviewPackageInUseMenu(EditorToolGUI.GetToolbarEntryRect(rectPos)); } GUILayout.FlexibleSpace(); } GUILayout.EndVertical(); }
void DoToolSettings(Rect rect) { rect = EditorToolGUI.GetThinArea(rect); EditorToolGUI.DoBuiltinToolSettings(rect, Styles.buttonLeft, Styles.buttonRight); }
public override void OnGUI() { const float space = 8; const float standardButtonWidth = 32; const float dropdownWidth = 80; const float playPauseStopWidth = 140; const float previewPackagesinUseWidth = 173; const float previewPackagesinUseIconWidth = 45; InitializeToolIcons(); bool isOrWillEnterPlaymode = EditorApplication.isPlayingOrWillChangePlaymode; GUI.color = isOrWillEnterPlaymode ? HostView.kPlayModeDarken : Color.white; if (Event.current.type == EventType.Repaint) { Styles.appToolbar.Draw(new Rect(0, 0, position.width, position.height), false, false, false, false); } // Position left aligned controls controls - start from left to right. Rect pos = new Rect(0, 0, 0, 0); ReserveWidthRight(space, ref pos); ReserveWidthRight(standardButtonWidth * s_ShownToolIcons.Length, ref pos); DoToolButtons(EditorToolGUI.GetThickArea(pos)); ReserveWidthRight(space, ref pos); int playModeControlsStart = Mathf.RoundToInt((position.width - playPauseStopWidth) / 2); pos.x += pos.width; const float pivotButtonsWidth = 128; pos.width = pivotButtonsWidth; DoToolSettings(EditorToolGUI.GetThickArea(pos)); pos.width = pivotButtonsWidth; ReserveWidthRight(standardButtonWidth, ref pos); DoSnapButtons(EditorToolGUI.GetThickArea(pos)); // Position centered controls. pos = new Rect(playModeControlsStart, 0, 240, 0); if (ModeService.HasCapability(ModeCapability.Playbar, true)) { GUILayout.BeginArea(EditorToolGUI.GetThickArea(pos)); GUILayout.BeginHorizontal(); { if (!ModeService.Execute("gui_playbar", isOrWillEnterPlaymode)) { DoPlayButtons(isOrWillEnterPlaymode); } } GUILayout.EndHorizontal(); GUILayout.EndArea(); } // Position right aligned controls controls - start from right to left. pos = new Rect(position.width, 0, 0, 0); // Right spacing side ReserveWidthLeft(space, ref pos); ReserveWidthLeft(dropdownWidth, ref pos); if (ModeService.HasCapability(ModeCapability.LayoutWindowMenu, true)) { DoLayoutDropDown(EditorToolGUI.GetThinArea(pos)); } if (ModeService.HasCapability(ModeCapability.Layers, true)) { ReserveWidthLeft(space, ref pos); ReserveWidthLeft(dropdownWidth, ref pos); DoLayersDropDown(EditorToolGUI.GetThinArea(pos)); } if (UnityEditor.MPE.ProcessService.level == UnityEditor.MPE.ProcessLevel.Master) { ReserveWidthLeft(space, ref pos); ReserveWidthLeft(dropdownWidth, ref pos); if (EditorGUI.DropdownButton(EditorToolGUI.GetThinArea(pos), s_AccountContent, FocusType.Passive, Styles.dropdown)) { ShowUserMenu(EditorToolGUI.GetThinArea(pos)); } ReserveWidthLeft(space, ref pos); ReserveWidthLeft(standardButtonWidth, ref pos); if (GUI.Button(EditorToolGUI.GetThinArea(pos), s_CloudIcon, Styles.command)) { ServicesEditorWindow.ShowServicesWindow(); } } foreach (SubToolbar subToolbar in s_SubToolbars) { ReserveWidthLeft(space, ref pos); ReserveWidthLeft(subToolbar.Width, ref pos); subToolbar.OnGUI(EditorToolGUI.GetThinArea(pos)); } if (Unsupported.IsDeveloperBuild() && ModeService.hasSwitchableModes) { EditorGUI.BeginChangeCheck(); ReserveWidthLeft(space, ref pos); ReserveWidthLeft(dropdownWidth, ref pos); var selectedModeIndex = EditorGUI.Popup(EditorToolGUI.GetThinArea(pos), ModeService.currentIndex, ModeService.modeNames, Styles.dropdown); if (EditorGUI.EndChangeCheck()) { EditorApplication.delayCall += () => ModeService.ChangeModeByIndex(selectedModeIndex); GUIUtility.ExitGUI(); } } if (m_IsPreviewPackagesInUse && !m_PackageManagerPrefs.dismissPreviewPackagesInUse) { ReserveWidthLeft(space, ref pos); var useIcon = Toolbar.get.mainToolbar.position.width < k_MinWidthChangePreviewPackageInUseToIcon; ReserveWidthLeft(useIcon ? previewPackagesinUseIconWidth : previewPackagesinUseWidth, ref pos); var dropDownCustomColor = new GUIStyle(Styles.previewPackageInUseDropdown); if (EditorGUI.DropdownButton(EditorToolGUI.GetThinArea(pos), useIcon ? s_PreviewPackageIcon : s_PreviewPackageContent, FocusType.Passive, dropDownCustomColor)) { ShowPreviewPackageInUseMenu(EditorToolGUI.GetThinArea(pos)); } } EditorGUI.ShowRepaints(); }
protected override void OldOnGUI() { const float space = 10; const float largeSpace = 20; const float standardButtonWidth = 32; const float dropdownWidth = 80; const float playPauseStopWidth = 140; InitializeToolIcons(); bool isOrWillEnterPlaymode = EditorApplication.isPlayingOrWillChangePlaymode; GUI.color = isOrWillEnterPlaymode ? HostView.kPlayModeDarken : Color.white; if (Event.current.type == EventType.Repaint) { Styles.appToolbar.Draw(new Rect(0, 0, position.width, position.height), false, false, false, false); } // Position left aligned controls controls - start from left to right. Rect pos = new Rect(0, 0, 0, 0); ReserveWidthRight(space, ref pos); ReserveWidthRight(standardButtonWidth * s_ShownToolIcons.Length, ref pos); DoToolButtons(EditorToolGUI.GetThickArea(pos)); ReserveWidthRight(largeSpace, ref pos); int playModeControlsStart = Mathf.RoundToInt((position.width - playPauseStopWidth) / 2); pos.x += pos.width; pos.width = (playModeControlsStart - pos.x) - largeSpace; DoToolSettings(EditorToolGUI.GetThickArea(pos)); // Position centered controls. pos = new Rect(playModeControlsStart, 0, 240, 0); if (ModeService.HasCapability(ModeCapability.Playbar, true)) { GUILayout.BeginArea(EditorToolGUI.GetThickArea(pos)); GUILayout.BeginHorizontal(); { if (!ModeService.Execute("gui_playbar", isOrWillEnterPlaymode)) { DoPlayButtons(isOrWillEnterPlaymode); } } GUILayout.EndHorizontal(); GUILayout.EndArea(); } // Position right aligned controls controls - start from right to left. pos = new Rect(position.width, 0, 0, 0); // Right spacing side ReserveWidthLeft(space, ref pos); ReserveWidthLeft(dropdownWidth, ref pos); DoLayoutDropDown(EditorToolGUI.GetThinArea(pos)); if (ModeService.HasCapability(ModeCapability.Layers, true)) { ReserveWidthLeft(space, ref pos); ReserveWidthLeft(dropdownWidth, ref pos); DoLayersDropDown(EditorToolGUI.GetThinArea(pos)); } ReserveWidthLeft(space, ref pos); ReserveWidthLeft(dropdownWidth, ref pos); if (EditorGUI.DropdownButton(EditorToolGUI.GetThinArea(pos), s_AccountContent, FocusType.Passive, Styles.dropdown)) { ShowUserMenu(EditorToolGUI.GetThinArea(pos)); } ReserveWidthLeft(space, ref pos); ReserveWidthLeft(standardButtonWidth, ref pos); if (GUI.Button(EditorToolGUI.GetThinArea(pos), s_CloudIcon, Styles.command)) { UnityConnectServiceCollection.instance.ShowService(HubAccess.kServiceName, true, "cloud_icon"); // Should show hub when it's done } foreach (SubToolbar subToolbar in s_SubToolbars) { ReserveWidthLeft(space, ref pos); ReserveWidthLeft(subToolbar.Width, ref pos); subToolbar.OnGUI(EditorToolGUI.GetThinArea(pos)); } if (ModeService.modeCount > 1 && Unsupported.IsDeveloperBuild()) { EditorGUI.BeginChangeCheck(); ReserveWidthLeft(space, ref pos); ReserveWidthLeft(dropdownWidth, ref pos); var selectedModeIndex = EditorGUI.Popup(EditorToolGUI.GetThinArea(pos), ModeService.currentIndex, ModeService.modeNames, Styles.dropdown); if (EditorGUI.EndChangeCheck()) { EditorApplication.delayCall += () => ModeService.ChangeModeByIndex(selectedModeIndex); GUIUtility.ExitGUI(); } } EditorGUI.ShowRepaints(); Highlighter.ControlHighlightGUI(this); }