public void OnExposureSlider() { if (s_Styles == null) { s_Styles = new Styles(); } m_ExposureSliderValue = EditorGUIInternal.ExposureSlider(m_ExposureSliderValue, ref m_ExposureSliderMax, s_Styles.previewSlider); }
internal static bool FoldoutHeaderGroupInternal(Rect position, bool foldout, string label, Texture2D background, Color backgroundColor, string additionalLabel = "") { GUIStyle foldoutStyle = EditorStyles.titlebarFoldout; var offset = 18; position.x += offset; // add some spaces so that we could draw a colored texture before the label label = $" {label}"; GUIContent content = new GUIContent(label); // Removing the default margin for inspectors if (EditorGUIUtility.hierarchyMode) { position.xMin -= EditorStyles.inspectorDefaultMargins.padding.left - EditorStyles.inspectorDefaultMargins.padding.right; position.xMax += EditorStyles.inspectorDefaultMargins.padding.right; } var labelSize = GUI.skin.label.CalcSize(new GUIContent(additionalLabel)); Rect menuRect = new Rect { x = position.xMax - foldoutStyle.padding.right - labelSize.x - offset, y = position.y + 2, size = labelSize }; int id = GUIUtility.GetControlID(s_FoldoutHeaderHash, FocusType.Keyboard, position); if (Event.current.type == EventType.KeyDown && GUIUtility.keyboardControl == id) { KeyCode kc = Event.current.keyCode; if (kc == KeyCode.LeftArrow && foldout || (kc == KeyCode.RightArrow && foldout == false)) { foldout = !foldout; GUI.changed = true; Event.current.Use(); } } else { foldout = EditorGUIInternal.DoToggleForward(position, id, foldout, content, foldoutStyle); } if (additionalLabel != null && Event.current.type == EventType.Repaint && labelSize.x < Screen.width * 0.8f) { GUI.Label(menuRect, additionalLabel); menuRect.x = 24 + offset; menuRect.y += 1; menuRect.width = menuRect.height = 16; GUI.DrawTexture(menuRect, background, ScaleMode.ScaleToFit, true, 1, backgroundColor, Vector4.zero, Vector4.one * 2, true); } return(foldout); }
static public bool LightmapParametersGUI(SerializedProperty prop, GUIContent content) { EditorGUILayout.BeginHorizontal(); EditorGUIInternal.AssetPopup <LightmapParameters>(prop, content, "giparams", "Scene Default Parameters"); string label = "Edit..."; if (isBuiltIn(prop)) { label = "View"; } bool editClicked = false; // If object is null, then get the scene parameter setting and view this instead. if (prop.objectReferenceValue == null) { SerializedObject so = new SerializedObject(LightmapEditorSettings.GetLightmapSettings()); SerializedProperty lightmapParameters = so.FindProperty("m_LightmapEditorSettings.m_LightmapParameters"); using (new EditorGUI.DisabledScope(lightmapParameters == null)) { if (isBuiltIn(lightmapParameters)) { label = "View"; } else { label = "Edit..."; } if (GUILayout.Button(label, EditorStyles.miniButton, GUILayout.ExpandWidth(false))) { Selection.activeObject = lightmapParameters.objectReferenceValue; editClicked = true; } } } else { if (GUILayout.Button(label, EditorStyles.miniButton, GUILayout.ExpandWidth(false))) { Selection.activeObject = prop.objectReferenceValue; editClicked = true; } } EditorGUILayout.EndHorizontal(); return(editClicked); }
public static bool LightmapParametersGUI(SerializedProperty prop, GUIContent content) { EditorGUILayout.BeginHorizontal(new GUILayoutOption[0]); EditorGUIInternal.AssetPopup <LightmapParameters>(prop, content, "giparams", "Scene Default Parameters"); string text = "Edit..."; if (LightingSettingsInspector.isBuiltIn(prop)) { text = "View"; } bool result = false; if (prop.objectReferenceValue == null) { SerializedObject serializedObject = new SerializedObject(LightmapEditorSettings.GetLightmapSettings()); SerializedProperty serializedProperty = serializedObject.FindProperty("m_LightmapEditorSettings.m_LightmapParameters"); using (new EditorGUI.DisabledScope(serializedProperty == null)) { if (LightingSettingsInspector.isBuiltIn(serializedProperty)) { text = "View"; } else { text = "Edit..."; } if (GUILayout.Button(text, EditorStyles.miniButton, new GUILayoutOption[] { GUILayout.ExpandWidth(false) })) { Selection.activeObject = serializedProperty.objectReferenceValue; result = true; } } } else if (GUILayout.Button(text, EditorStyles.miniButton, new GUILayoutOption[] { GUILayout.ExpandWidth(false) })) { Selection.activeObject = prop.objectReferenceValue; result = true; } EditorGUILayout.EndHorizontal(); return(result); }
public static bool LightmapParametersGUI(SerializedProperty prop, GUIContent content) { EditorGUILayout.BeginHorizontal(new GUILayoutOption[0]); EditorGUIInternal.AssetPopup <LightmapParameters>(prop, content, "giparams"); EditorGUI.BeginDisabledGroup(prop.objectReferenceValue == null); bool flag = false; GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.ExpandWidth(false) }; if (GUILayout.Button("Edit...", EditorStyles.miniButton, options)) { Selection.activeObject = prop.objectReferenceValue; flag = true; } EditorGUI.EndDisabledGroup(); EditorGUILayout.EndHorizontal(); return(flag); }
public static bool LightmapParametersGUI(SerializedProperty prop, GUIContent content, bool advancedParameters) { EditorGUILayout.BeginHorizontal(new GUILayoutOption[0]); if (advancedParameters) { EditorGUIInternal.AssetPopup <LightmapParameters>(prop, content, "giparams", "Default scene parameter"); } else { EditorGUIInternal.AssetPopup <LightmapParameters>(prop, content, "giparams", "Default-Medium"); } string text = "Edit..."; if (LightingWindowObjectTab.isBuiltIn(prop)) { text = "View"; } bool result = false; if (prop.objectReferenceValue == null) { using (new EditorGUI.DisabledScope(true)) { if (GUILayout.Button(text, EditorStyles.miniButton, new GUILayoutOption[] { GUILayout.ExpandWidth(false) })) { Selection.activeObject = null; result = true; } } } else if (GUILayout.Button(text, EditorStyles.miniButton, new GUILayoutOption[] { GUILayout.ExpandWidth(false) })) { Selection.activeObject = prop.objectReferenceValue; result = true; } EditorGUILayout.EndHorizontal(); return(result); }
public static bool LightmapParametersGUI(SerializedProperty prop, GUIContent content, bool advancedParameters) { EditorGUILayout.BeginHorizontal(new GUILayoutOption[0]); if (advancedParameters) { EditorGUIInternal.AssetPopup <LightmapParameters>(prop, content, "giparams", "Default scene parameter"); } else { EditorGUIInternal.AssetPopup <LightmapParameters>(prop, content, "giparams", "Default-Medium"); } string text = "Edit..."; if (isBuiltIn(prop)) { text = "View"; } bool flag = false; if (prop.objectReferenceValue == null) { SerializedProperty property = new SerializedObject(LightmapEditorSettings.GetLightmapSettings()).FindProperty("m_LightmapEditorSettings.m_LightmapParameters"); using (new EditorGUI.DisabledScope(property == null)) { GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.ExpandWidth(false) }; if (GUILayout.Button(text, EditorStyles.miniButton, options)) { Selection.activeObject = property.objectReferenceValue; flag = true; } } } else { GUILayoutOption[] optionArray2 = new GUILayoutOption[] { GUILayout.ExpandWidth(false) }; if (GUILayout.Button(text, EditorStyles.miniButton, optionArray2)) { Selection.activeObject = prop.objectReferenceValue; flag = true; } } EditorGUILayout.EndHorizontal(); return(flag); }
static private bool LightmapParametersGUI(SerializedProperty prop, GUIContent content) { EditorGUILayout.BeginHorizontal(); EditorGUIInternal.AssetPopup <LightmapParameters>(prop, content, "giparams", "Default-Medium"); string label = "Edit..."; if (isBuiltIn(prop)) { label = "View"; } bool editClicked = false; if (prop.objectReferenceValue == null) { using (new EditorGUI.DisabledScope(true)) { if (GUILayout.Button(label, EditorStyles.miniButton, GUILayout.ExpandWidth(false))) { Selection.activeObject = null; editClicked = true; } } } else { if (GUILayout.Button(label, EditorStyles.miniButton, GUILayout.ExpandWidth(false))) { Selection.activeObject = prop.objectReferenceValue; editClicked = true; } } EditorGUILayout.EndHorizontal(); return(editClicked); }
private void DrawPreviewSettings() { using (new EditorGUI.DisabledScope(!SelectedTextureTypeNeedsExposureControl())) { m_ExposureSliderValue = EditorGUIInternal.ExposureSlider(m_ExposureSliderValue, ref m_ExposureSliderMax, EditorStyles.toolbarSlider); } m_ShowUVOverlay = GUILayout.Toggle(m_ShowUVOverlay, Styles.UVOverlayIcon, EditorStyles.toolbarButton); Rect dropRect = GUILayoutUtility.GetRect(14, 160, EditorGUI.kWindowToolbarHeight, EditorGUI.kWindowToolbarHeight); GUIContent[] options = isRealtimeLightmap ? Styles.RealtimePreviewTextureOptions : Styles.BakedPreviewTextureOptions; GITextureType[] types = isRealtimeLightmap ? kRealtimePreviewTextureTypes : kBakedPreviewTextureTypes; if ((m_SelectedPreviewTextureOptionIndex < 0 || m_SelectedPreviewTextureOptionIndex >= options.Length) || !LightmapVisualizationUtility.IsTextureTypeEnabled(types[m_SelectedPreviewTextureOptionIndex])) { m_SelectedPreviewTextureOptionIndex = 0; } if (EditorGUI.DropdownButton(dropRect, options[m_SelectedPreviewTextureOptionIndex], FocusType.Passive, EditorStyles.toolbarDropDownRight)) { GenericMenu menu = new GenericMenu(); for (int i = 0; i < options.Length; i++) { if (LightmapVisualizationUtility.IsTextureTypeEnabled(types[i])) { menu.AddItem(options[i], m_SelectedPreviewTextureOptionIndex == i, SelectPreviewTextureIndex, options.ElementAt(i)); } else { menu.AddDisabledItem(options.ElementAt(i)); } } menu.DropDown(dropRect); } }
public void BeginWindows() { EditorGUIInternal.BeginWindowsForward(1, base.GetInstanceID()); }
public static bool BeginFoldoutHeaderGroup(Rect position, bool foldout, GUIContent content, [DefaultValue("EditorStyles.foldoutHeader")] GUIStyle style = null, Action <Rect> menuAction = null, GUIStyle menuIcon = null) { // Removing the default margin for inspectors if (EditorGUIUtility.hierarchyMode) { position.xMin -= EditorStyles.inspectorDefaultMargins.padding.left - EditorStyles.inspectorDefaultMargins.padding.right; position.xMax += EditorStyles.inspectorDefaultMargins.padding.right; } if (style == null) { style = EditorStyles.foldoutHeader; } if (s_FoldoutHeaderGroupActive) { EditorGUI.HelpBox(position, L10n.Tr("You can't nest Foldout Headers, end it with EndHeaderFoldoutGroup."), MessageType.Error); return(false); } s_FoldoutHeaderGroupActive = true; const float iconSize = 16; Rect menuRect = new Rect { x = position.xMax - style.padding.right - iconSize, y = position.y + style.padding.top, size = Vector2.one * iconSize }; bool menuIconHover = menuRect.Contains(Event.current.mousePosition); bool menuIconActive = (menuIconHover && Event.current.type == EventType.MouseDown && Event.current.button == 0); if (menuAction != null && menuIconActive) { menuAction.Invoke(menuRect); Event.current.Use(); } int id = GUIUtility.GetControlID(s_FoldoutHeaderHash, FocusType.Keyboard, position); if (Event.current.type == EventType.KeyDown && GUIUtility.keyboardControl == id) { KeyCode kc = Event.current.keyCode; if (kc == KeyCode.LeftArrow && foldout || (kc == KeyCode.RightArrow && foldout == false)) { foldout = !foldout; GUI.changed = true; Event.current.Use(); } } else { foldout = EditorGUIInternal.DoToggleForward(position, id, foldout, content, style); } // Menu icon if (menuAction != null && Event.current.type == EventType.Repaint) { if (menuIcon == null) { menuIcon = EditorStyles.foldoutHeaderIcon; } menuIcon.Draw(menuRect, menuIconHover, menuIconActive, false, false); } return(foldout); }
internal static void AssetPopup <T>(SerializedProperty serializedProperty, GUIContent content, string fileExtension) where T : UnityEngine.Object, new() { EditorGUIInternal.AssetPopup <T>(serializedProperty, content, fileExtension, "Default"); }
public override void OnPreviewSettings() { if (IsCubemap()) { m_CubemapPreview.OnPreviewSettings(targets); return; } if (IsTexture2DArray() && !SystemInfo.supports2DArrayTextures) { return; } if (s_Styles == null) { s_Styles = new Styles(); } // TextureInspector code is reused for RenderTexture and Cubemap inspectors. // Make sure we can handle the situation where target is just a Texture and // not a Texture2D. It's also used for large popups for mini texture fields, // and while it's being shown the actual texture object might disappear -- // make sure to handle null targets. Texture tex = target as Texture; bool alphaOnly = false; bool hasAlpha = true; bool needsExposureControl = false; int mipCount = 1; if (target is Texture2D) { alphaOnly = true; hasAlpha = false; } foreach (Texture t in targets) { if (t == null) // texture might have disappeared while we're showing this in a preview popup { continue; } mipCount = Mathf.Max(mipCount, TextureUtil.GetMipmapCount(t)); if (t is Texture2D) { TextureFormat format = (t as Texture2D).format; TextureUsageMode mode = TextureUtil.GetUsageMode(t); if (!TextureUtil.IsAlphaOnlyTextureFormat(format)) { alphaOnly = false; } if (TextureUtil.HasAlphaTextureFormat(format)) { if (mode == TextureUsageMode.Default) // all other texture usage modes don't displayable alpha { hasAlpha = true; } } if (TextureUtil.NeedsExposureControl(t)) { needsExposureControl = true; } } } List <PreviewMode> previewCandidates = new List <PreviewMode>(5); previewCandidates.Add(PreviewMode.RGB); previewCandidates.Add(PreviewMode.R); previewCandidates.Add(PreviewMode.G); previewCandidates.Add(PreviewMode.B); previewCandidates.Add(PreviewMode.A); if (alphaOnly) { previewCandidates.Clear(); previewCandidates.Add(PreviewMode.A); m_PreviewMode = PreviewMode.A; } else if (!hasAlpha) { previewCandidates.Remove(PreviewMode.A); } if (previewCandidates.Count > 1 && tex != null && !IsNormalMap(tex)) { int selectedIndex = previewCandidates.IndexOf(m_PreviewMode); if (selectedIndex == -1) { selectedIndex = 0; } if (previewCandidates.Contains(PreviewMode.RGB)) { m_PreviewMode = GUILayout.Toggle(m_PreviewMode == PreviewMode.RGB, s_Styles.previewButtonContents[0], s_Styles.toolbarButton) ? PreviewMode.RGB : m_PreviewMode; } if (previewCandidates.Contains(PreviewMode.R)) { m_PreviewMode = GUILayout.Toggle(m_PreviewMode == PreviewMode.R, s_Styles.previewButtonContents[1], s_Styles.toolbarButton) ? PreviewMode.R : m_PreviewMode; } if (previewCandidates.Contains(PreviewMode.G)) { m_PreviewMode = GUILayout.Toggle(m_PreviewMode == PreviewMode.G, s_Styles.previewButtonContents[2], s_Styles.toolbarButton) ? PreviewMode.G : m_PreviewMode; } if (previewCandidates.Contains(PreviewMode.B)) { m_PreviewMode = GUILayout.Toggle(m_PreviewMode == PreviewMode.B, s_Styles.previewButtonContents[3], s_Styles.toolbarButton) ? PreviewMode.B : m_PreviewMode; } if (previewCandidates.Contains(PreviewMode.A)) { m_PreviewMode = GUILayout.Toggle(m_PreviewMode == PreviewMode.A, s_Styles.previewButtonContents[4], s_Styles.toolbarButton) ? PreviewMode.A : m_PreviewMode; } } if (needsExposureControl) { m_ExposureSliderValue = EditorGUIInternal.ExposureSlider(m_ExposureSliderValue, ref m_ExposureSliderMax, s_Styles.previewSlider); } if (mipCount > 1) { GUILayout.Box(s_Styles.smallZoom, s_Styles.previewLabel); GUI.changed = false; m_MipLevel = Mathf.Round(GUILayout.HorizontalSlider(m_MipLevel, mipCount - 1, 0, s_Styles.previewSlider, s_Styles.previewSliderThumb, GUILayout.MaxWidth(64))); //For now, we don't have mipmaps smaller than the tile size when using VT. if (EditorGUI.UseVTMaterial(tex)) { int numMipsOfTile = (int)Mathf.Log(VirtualTexturing.EditorHelpers.tileSize, 2) + 1; m_MipLevel = Mathf.Min(m_MipLevel, Mathf.Max(mipCount - numMipsOfTile, 0)); } GUILayout.Box(s_Styles.largeZoom, s_Styles.previewLabel); } }
public void OnPreviewSettings(Object[] targets) { if (!ShaderUtil.hardwareSupportsRectRenderTexture) { return; } GUI.enabled = true; InitPreview(); bool showMode = true; bool alphaOnly = true; //@TODO: Share some code with texture inspector??? bool hasAlpha = false; bool needsExposureControl = false; int mipCount = 8; foreach (Texture t2 in targets) { mipCount = Mathf.Max(mipCount, TextureUtil.GetMipmapCount(t2)); Cubemap cubemap = t2 as Cubemap; if (cubemap) { TextureFormat format = cubemap.format; if (!TextureUtil.IsAlphaOnlyTextureFormat(format)) { alphaOnly = false; } if (TextureUtil.HasAlphaTextureFormat(format)) { TextureUsageMode mode = TextureUtil.GetUsageMode(t2); if (mode == TextureUsageMode.Default) // all other texture usage modes don't displayable alpha { hasAlpha = true; } } if (TextureUtil.NeedsExposureControl(t2)) { needsExposureControl = true; } } else { hasAlpha = true; alphaOnly = false; } } if (alphaOnly) { m_PreviewType = PreviewType.Alpha; showMode = false; } else if (!hasAlpha) { m_PreviewType = PreviewType.RGB; showMode = false; } if (showMode) { GUIContent[] kPreviewIcons = { Styles.RGBIcon, Styles.alphaIcon }; int index = (int)m_PreviewType; if (GUILayout.Button(kPreviewIcons[index], Styles.preButton)) { m_PreviewType = (PreviewType)(++index % kPreviewIcons.Length); } } if (needsExposureControl) { m_ExposureSliderValue = EditorGUIInternal.ExposureSlider(m_ExposureSliderValue, ref m_ExposureSliderMax, Styles.preSlider); } GUI.enabled = (mipCount != 1); GUILayout.Box(Styles.smallZoom, Styles.preLabel); GUI.changed = false; m_MipLevel = Mathf.Round(GUILayout.HorizontalSlider(m_MipLevel, mipCount - 1, 0, Styles.preSlider, Styles.preSliderThumb, GUILayout.MaxWidth(64))); GUILayout.Box(Styles.largeZoom, Styles.preLabel); GUI.enabled = true; }