UnityEditor.GradientEditor.OnGUI C# (CSharp) Method

OnGUI() public method

public OnGUI ( Rect position ) : void
position UnityEngine.Rect
return void
        public void OnGUI(Rect position)
        {
            if (s_Styles == null)
            {
                s_Styles = new Styles();
            }
            float num = 24f;
            float num2 = 16f;
            float num3 = 26f;
            float num4 = ((position.height - (2f * num2)) - num3) - num;
            position.height = num;
            this.m_GradientMode = (GradientMode) EditorGUI.EnumPopup(position, s_Styles.modeText, this.m_GradientMode);
            if (this.m_GradientMode != this.m_Gradient.mode)
            {
                this.AssignBack();
            }
            position.y += num;
            position.height = num2;
            this.ShowSwatchArray(position, this.m_AlphaSwatches, true);
            position.y += num2;
            if (Event.current.type == EventType.Repaint)
            {
                position.height = num4;
                DrawGradientWithBackground(position, GradientPreviewCache.GetGradientPreview(this.m_Gradient));
            }
            position.y += num4;
            position.height = num2;
            this.ShowSwatchArray(position, this.m_RGBSwatches, false);
            if (this.m_SelectedSwatch != null)
            {
                position.y += num2;
                position.height = num3;
                position.y += 10f;
                float num5 = 45f;
                float num6 = 60f;
                float num7 = 20f;
                float num8 = 50f;
                float num9 = ((num6 + num7) + num6) + num5;
                Rect rect = position;
                rect.height = 18f;
                rect.x += 17f;
                rect.width -= num9;
                EditorGUIUtility.labelWidth = num8;
                if (this.m_SelectedSwatch.m_IsAlpha)
                {
                    EditorGUIUtility.fieldWidth = 30f;
                    EditorGUI.BeginChangeCheck();
                    float num10 = ((float) EditorGUI.IntSlider(rect, s_Styles.alphaText, (int) (this.m_SelectedSwatch.m_Value.r * 255f), 0, 0xff)) / 255f;
                    if (EditorGUI.EndChangeCheck())
                    {
                        num10 = Mathf.Clamp01(num10);
                        this.m_SelectedSwatch.m_Value.r = this.m_SelectedSwatch.m_Value.g = this.m_SelectedSwatch.m_Value.b = num10;
                        this.AssignBack();
                        HandleUtility.Repaint();
                    }
                }
                else
                {
                    EditorGUI.BeginChangeCheck();
                    this.m_SelectedSwatch.m_Value = EditorGUI.ColorField(rect, s_Styles.colorText, this.m_SelectedSwatch.m_Value, true, false);
                    if (EditorGUI.EndChangeCheck())
                    {
                        this.AssignBack();
                        HandleUtility.Repaint();
                    }
                }
                rect.x += rect.width + num7;
                rect.width = num5 + num6;
                EditorGUIUtility.labelWidth = num6;
                string kFloatFieldFormatString = EditorGUI.kFloatFieldFormatString;
                EditorGUI.kFloatFieldFormatString = "f1";
                EditorGUI.BeginChangeCheck();
                float num12 = EditorGUI.FloatField(rect, s_Styles.locationText, this.m_SelectedSwatch.m_Time * 100f) / 100f;
                if (EditorGUI.EndChangeCheck())
                {
                    this.m_SelectedSwatch.m_Time = Mathf.Clamp(num12, 0f, 1f);
                    this.AssignBack();
                }
                EditorGUI.kFloatFieldFormatString = kFloatFieldFormatString;
                rect.x += rect.width;
                rect.width = 20f;
                GUI.Label(rect, s_Styles.percentText);
            }
        }

Usage Example

示例#1
0
        public void OnGUI()
        {
            // When we start play (using shortcut keys) we get two OnGui calls and m_Gradient is null: so early out.
            if (m_Gradient == null)
            {
                return;
            }

            InitIfNeeded();

            float gradientEditorHeight = Mathf.Min(position.height, 146);
            float distBetween          = 10f;
            float presetLibraryHeight  = position.height - gradientEditorHeight - distBetween;

            Rect gradientEditorRect  = new Rect(10, 10, position.width - 20, gradientEditorHeight - 20);
            Rect gradientLibraryRect = new Rect(0, gradientEditorHeight + distBetween, position.width, presetLibraryHeight);

            // Separator
            EditorGUI.DrawRect(new Rect(gradientLibraryRect.x, gradientLibraryRect.y - 1, gradientLibraryRect.width, 1), new Color(0, 0, 0, 0.3f));
            EditorGUI.DrawRect(new Rect(gradientLibraryRect.x, gradientLibraryRect.y, gradientLibraryRect.width, 1), new Color(1, 1, 1, 0.1f));

            // The meat
            EditorGUI.BeginChangeCheck();
            m_GradientEditor.OnGUI(gradientEditorRect);
            if (EditorGUI.EndChangeCheck())
            {
                gradientChanged = true;
            }
            m_GradientLibraryEditor.OnGUI(gradientLibraryRect, m_Gradient);
            if (gradientChanged)
            {
                gradientChanged = false;
                SendEvent(true);
            }
        }