static int DoVerticalAligmentControl(Rect position, SerializedProperty alignment) { var selected = TMP_EditorUtility.GetVerticalAlignmentGridValue(alignment.intValue); var values = new bool[6]; values[selected] = true; if (alignment.hasMultipleDifferentValues) { foreach (var obj in alignment.serializedObject.targetObjects) { var text = obj as TMP_Text; if (text != null) { values[TMP_EditorUtility.GetVerticalAlignmentGridValue((int)text.alignment)] = true; } } } position.width = k_AlignmentButtonWidth; for (var i = 0; i < values.Length; i++) { var oldValue = values[i]; var newValue = TMP_EditorUtility.EditorToggle(position, oldValue, TMP_UIStyleManager.alignContentB[i], i == 0 ? TMP_UIStyleManager.alignmentButtonLeft : (i == 5 ? TMP_UIStyleManager.alignmentButtonRight : TMP_UIStyleManager.alignmentButtonMid)); if (newValue != oldValue) { selected = i; } position.x += position.width; } return(selected); }
protected bool BeginPanel(string panel, bool expanded) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); Rect r = EditorGUI.IndentedRect(GUILayoutUtility.GetRect(20, 18)); r.x += 20; r.width += 6; bool enabled = GUI.enabled; GUI.enabled = true; expanded = TMP_EditorUtility.EditorToggle(r, expanded, new GUIContent(panel), TMP_UIStyleManager.panelTitle); GUI.enabled = enabled; EditorGUI.indentLevel += 1; EditorGUI.BeginDisabledGroup(false); return(expanded); }
protected bool BeginPanel(string panel, ShaderFeature feature, bool expanded, bool readState = true) { EditorGUI.indentLevel = 0; if (readState) { feature.ReadState(m_Material); } EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginVertical(EditorStyles.helpBox); GUILayout.BeginHorizontal(); Rect r = EditorGUI.IndentedRect(GUILayoutUtility.GetRect(20, 20, GUILayout.Width(20f))); bool active = EditorGUI.Toggle(r, feature.Active); if (EditorGUI.EndChangeCheck()) { m_Editor.RegisterPropertyChangeUndo(feature.undoLabel); feature.SetActive(active, m_Material); } r = EditorGUI.IndentedRect(GUILayoutUtility.GetRect(20, 18)); r.width += 6; bool enabled = GUI.enabled; GUI.enabled = true; expanded = TMP_EditorUtility.EditorToggle(r, expanded, new GUIContent(panel), TMP_UIStyleManager.panelTitle); r.width -= 10; EditorGUI.LabelField(r, new GUIContent(expanded ? s_PanelStateLabel[0] : s_PanelStateLabel[1]), TMP_UIStyleManager.rightLabel); GUI.enabled = enabled; GUILayout.EndHorizontal(); EditorGUI.indentLevel += 1; EditorGUI.BeginDisabledGroup(!active); return(expanded); }
void DrawFont() { // Update list of material presets if needed. if (m_IsPresetListDirty) { m_MaterialPresetNames = GetMaterialPresets(); } // FONT ASSET EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(m_FontAssetProp, k_FontAssetLabel); if (EditorGUI.EndChangeCheck()) { m_HavePropertiesChanged = true; m_HasFontAssetChangedProp.boolValue = true; m_IsPresetListDirty = true; m_MaterialPresetSelectionIndex = 0; } Rect rect; // MATERIAL PRESET if (m_MaterialPresetNames != null) { EditorGUI.BeginChangeCheck(); rect = EditorGUILayout.GetControlRect(false, 17); float oldHeight = EditorStyles.popup.fixedHeight; EditorStyles.popup.fixedHeight = rect.height; int oldSize = EditorStyles.popup.fontSize; EditorStyles.popup.fontSize = 11; m_MaterialPresetSelectionIndex = EditorGUI.Popup(rect, k_MaterialPresetLabel, m_MaterialPresetSelectionIndex, m_MaterialPresetNames); if (EditorGUI.EndChangeCheck()) { m_FontSharedMaterialProp.objectReferenceValue = m_MaterialPresets[m_MaterialPresetSelectionIndex]; m_HavePropertiesChanged = true; } //Make sure material preset selection index matches the selection if (m_MaterialPresetSelectionIndex < m_MaterialPresetNames.Length && m_TargetMaterial != m_MaterialPresets[m_MaterialPresetSelectionIndex] && !m_HavePropertiesChanged) { m_IsPresetListDirty = true; } EditorStyles.popup.fixedHeight = oldHeight; EditorStyles.popup.fontSize = oldSize; } // FONT STYLE EditorGUI.BeginChangeCheck(); int v1, v2, v3, v4, v5, v6, v7; if (EditorGUIUtility.wideMode) { rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight + 2f); EditorGUI.PrefixLabel(rect, k_FontStyleLabel); int styleValue = m_FontStyleProp.intValue; rect.x += EditorGUIUtility.labelWidth; rect.width -= EditorGUIUtility.labelWidth; rect.width = Mathf.Max(25f, rect.width / 7f); v1 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 1) == 1, k_BoldLabel, TMP_UIStyleManager.alignmentButtonLeft) ? 1 : 0; // Bold rect.x += rect.width; v2 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 2) == 2, k_ItalicLabel, TMP_UIStyleManager.alignmentButtonMid) ? 2 : 0; // Italics rect.x += rect.width; v3 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 4) == 4, k_UnderlineLabel, TMP_UIStyleManager.alignmentButtonMid) ? 4 : 0; // Underline rect.x += rect.width; v7 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 64) == 64, k_StrikethroughLabel, TMP_UIStyleManager.alignmentButtonRight) ? 64 : 0; // Strikethrough rect.x += rect.width; int selected = 0; EditorGUI.BeginChangeCheck(); v4 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 8) == 8, k_LowercaseLabel, TMP_UIStyleManager.alignmentButtonLeft) ? 8 : 0; // Lowercase if (EditorGUI.EndChangeCheck() && v4 > 0) { selected = v4; } rect.x += rect.width; EditorGUI.BeginChangeCheck(); v5 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 16) == 16, k_UppercaseLabel, TMP_UIStyleManager.alignmentButtonMid) ? 16 : 0; // Uppercase if (EditorGUI.EndChangeCheck() && v5 > 0) { selected = v5; } rect.x += rect.width; EditorGUI.BeginChangeCheck(); v6 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 32) == 32, k_SmallcapsLabel, TMP_UIStyleManager.alignmentButtonRight) ? 32 : 0; // Smallcaps if (EditorGUI.EndChangeCheck() && v6 > 0) { selected = v6; } if (selected > 0) { v4 = selected == 8 ? 8 : 0; v5 = selected == 16 ? 16 : 0; v6 = selected == 32 ? 32 : 0; } } else { rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight + 2f); EditorGUI.PrefixLabel(rect, k_FontStyleLabel); int styleValue = m_FontStyleProp.intValue; rect.x += EditorGUIUtility.labelWidth; rect.width -= EditorGUIUtility.labelWidth; rect.width = Mathf.Max(25f, rect.width / 4f); v1 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 1) == 1, k_BoldLabel, TMP_UIStyleManager.alignmentButtonLeft) ? 1 : 0; // Bold rect.x += rect.width; v2 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 2) == 2, k_ItalicLabel, TMP_UIStyleManager.alignmentButtonMid) ? 2 : 0; // Italics rect.x += rect.width; v3 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 4) == 4, k_UnderlineLabel, TMP_UIStyleManager.alignmentButtonMid) ? 4 : 0; // Underline rect.x += rect.width; v7 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 64) == 64, k_StrikethroughLabel, TMP_UIStyleManager.alignmentButtonRight) ? 64 : 0; // Strikethrough rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight + 2f); rect.x += EditorGUIUtility.labelWidth; rect.width -= EditorGUIUtility.labelWidth; rect.width = Mathf.Max(25f, rect.width / 4f); int selected = 0; EditorGUI.BeginChangeCheck(); v4 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 8) == 8, k_LowercaseLabel, TMP_UIStyleManager.alignmentButtonLeft) ? 8 : 0; // Lowercase if (EditorGUI.EndChangeCheck() && v4 > 0) { selected = v4; } rect.x += rect.width; EditorGUI.BeginChangeCheck(); v5 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 16) == 16, k_UppercaseLabel, TMP_UIStyleManager.alignmentButtonMid) ? 16 : 0; // Uppercase if (EditorGUI.EndChangeCheck() && v5 > 0) { selected = v5; } rect.x += rect.width; EditorGUI.BeginChangeCheck(); v6 = TMP_EditorUtility.EditorToggle(rect, (styleValue & 32) == 32, k_SmallcapsLabel, TMP_UIStyleManager.alignmentButtonRight) ? 32 : 0; // Smallcaps if (EditorGUI.EndChangeCheck() && v6 > 0) { selected = v6; } if (selected > 0) { v4 = selected == 8 ? 8 : 0; v5 = selected == 16 ? 16 : 0; v6 = selected == 32 ? 32 : 0; } } if (EditorGUI.EndChangeCheck()) { m_FontStyleProp.intValue = v1 + v2 + v3 + v4 + v5 + v6 + v7; m_HavePropertiesChanged = true; } // FONT SIZE EditorGUI.BeginChangeCheck(); EditorGUI.BeginDisabledGroup(m_AutoSizingProp.boolValue); EditorGUILayout.PropertyField(m_FontSizeProp, k_FontSizeLabel, GUILayout.MaxWidth(EditorGUIUtility.labelWidth + 50f)); EditorGUI.EndDisabledGroup(); if (EditorGUI.EndChangeCheck()) { m_FontSizeBaseProp.floatValue = m_FontSizeProp.floatValue; m_HavePropertiesChanged = true; } EditorGUI.indentLevel += 1; EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(m_AutoSizingProp, k_AutoSizeLabel); if (EditorGUI.EndChangeCheck()) { if (m_AutoSizingProp.boolValue == false) { m_FontSizeProp.floatValue = m_FontSizeBaseProp.floatValue; } m_HavePropertiesChanged = true; } // Show auto sizing options if (m_AutoSizingProp.boolValue) { rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight); EditorGUI.PrefixLabel(rect, k_AutoSizeOptionsLabel); int previousIndent = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; rect.width = (rect.width - EditorGUIUtility.labelWidth) / 4f; rect.x += EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = 24; EditorGUI.BeginChangeCheck(); EditorGUI.PropertyField(rect, m_FontSizeMinProp, k_MinLabel); if (EditorGUI.EndChangeCheck()) { m_FontSizeMinProp.floatValue = Mathf.Min(m_FontSizeMinProp.floatValue, m_FontSizeMaxProp.floatValue); m_HavePropertiesChanged = true; } rect.x += rect.width; EditorGUIUtility.labelWidth = 27; EditorGUI.BeginChangeCheck(); EditorGUI.PropertyField(rect, m_FontSizeMaxProp, k_MaxLabel); if (EditorGUI.EndChangeCheck()) { m_FontSizeMaxProp.floatValue = Mathf.Max(m_FontSizeMinProp.floatValue, m_FontSizeMaxProp.floatValue); m_HavePropertiesChanged = true; } rect.x += rect.width; EditorGUI.BeginChangeCheck(); EditorGUIUtility.labelWidth = 36; EditorGUI.PropertyField(rect, m_CharWidthMaxAdjProp, k_WdLabel); rect.x += rect.width; EditorGUIUtility.labelWidth = 28; EditorGUI.PropertyField(rect, m_LineSpacingMaxProp, k_LineLabel); EditorGUIUtility.labelWidth = 0; if (EditorGUI.EndChangeCheck()) { m_CharWidthMaxAdjProp.floatValue = Mathf.Clamp(m_CharWidthMaxAdjProp.floatValue, 0, 50); m_LineSpacingMaxProp.floatValue = Mathf.Min(0, m_LineSpacingMaxProp.floatValue); m_HavePropertiesChanged = true; } EditorGUI.indentLevel = previousIndent; } EditorGUI.indentLevel -= 1; EditorGUILayout.Space(); }