public static void DrawMinMaxFilledCurve(Rect r, AudioCurveRendering.AudioMinMaxCurveAndColorEvaluator eval)
        {
            HandleUtility.ApplyWireMaterial();
            GL.Begin(1);
            float num  = EditorGUIUtility.pixelsPerPoint;
            float num2 = 1f / num;
            float num3 = 0.5f * num2;
            float num4 = Mathf.Ceil(r.width) * num;
            float num5 = Mathf.Floor(r.x) + AudioCurveRendering.pixelEpsilon;
            float num6 = 1f / (num4 - 1f);
            float num7 = r.height * 0.5f;
            float num8 = r.y + 0.5f * r.height;
            Color c;
            float value;
            float value2;

            eval(0.0001f, out c, out value, out value2);
            AudioCurveRendering.Sort2(ref value, ref value2);
            float b    = num8 - num7 * Mathf.Clamp(value2, -1f, 1f);
            float b2   = num8 - num7 * Mathf.Clamp(value, -1f, 1f);
            float y    = r.y;
            float max  = r.y + r.height;
            int   num9 = 0;

            while ((float)num9 < num4)
            {
                float x = num5 + (float)num9 * num2;
                eval((float)num9 * num6, out c, out value, out value2);
                AudioCurveRendering.Sort2(ref value, ref value2);
                Color c2    = new Color(c.r, c.g, c.b, 0f);
                float num10 = num8 - num7 * Mathf.Clamp(value2, -1f, 1f);
                float num11 = num8 - num7 * Mathf.Clamp(value, -1f, 1f);
                float y2    = Mathf.Clamp(Mathf.Min(num10, b) - num3, y, max);
                float y3    = Mathf.Clamp(Mathf.Max(num10, b) + num3, y, max);
                float y4    = Mathf.Clamp(Mathf.Min(num11, b2) - num3, y, max);
                float y5    = Mathf.Clamp(Mathf.Max(num11, b2) + num3, y, max);
                AudioCurveRendering.Sort2(ref y2, ref y4);
                AudioCurveRendering.Sort2(ref y3, ref y5);
                AudioCurveRendering.Sort2(ref y2, ref y3);
                AudioCurveRendering.Sort2(ref y4, ref y5);
                AudioCurveRendering.Sort2(ref y3, ref y4);
                GL.Color(c2);
                AudioMixerDrawUtils.Vertex(x, y2);
                GL.Color(c);
                AudioMixerDrawUtils.Vertex(x, y3);
                AudioMixerDrawUtils.Vertex(x, y3);
                AudioMixerDrawUtils.Vertex(x, y4);
                AudioMixerDrawUtils.Vertex(x, y4);
                GL.Color(c2);
                AudioMixerDrawUtils.Vertex(x, y5);
                b2 = num11;
                b  = num10;
                num9++;
            }
            GL.End();
        }
Beispiel #2
0
        public static void DrawMinMaxFilledCurve(Rect r, AudioCurveRendering.AudioMinMaxCurveAndColorEvaluator eval)
        {
            HandleUtility.ApplyWireMaterial();
            GL.Begin(1);
            float pixelsPerPoint = EditorGUIUtility.pixelsPerPoint;
            float num1           = 1f / pixelsPerPoint;
            float num2           = 0.5f * num1;
            float num3           = Mathf.Ceil(r.width) * pixelsPerPoint;
            float num4           = Mathf.Floor(r.x) + AudioCurveRendering.pixelEpsilon;
            float num5           = 1f / (num3 - 1f);
            float num6           = r.height * 0.5f;
            float num7           = r.y + 0.5f * r.height;
            Color col;
            float minValue1;
            float maxValue1;

            eval(0.0001f, out col, out minValue1, out maxValue1);
            AudioCurveRendering.Sort2(ref minValue1, ref maxValue1);
            float b1  = num7 - num6 * Mathf.Clamp(maxValue1, -1f, 1f);
            float b2  = num7 - num6 * Mathf.Clamp(minValue1, -1f, 1f);
            float y1  = r.y;
            float max = r.y + r.height;

            for (int index = 0; (double)index < (double)num3; ++index)
            {
                float x = num4 + (float)index * num1;
                eval((float)index * num5, out col, out minValue1, out maxValue1);
                AudioCurveRendering.Sort2(ref minValue1, ref maxValue1);
                Color c         = new Color(col.r, col.g, col.b, 0.0f);
                float a1        = num7 - num6 * Mathf.Clamp(maxValue1, -1f, 1f);
                float a2        = num7 - num6 * Mathf.Clamp(minValue1, -1f, 1f);
                float minValue2 = Mathf.Clamp(Mathf.Min(a1, b1) - num2, y1, max);
                float y2        = Mathf.Clamp(Mathf.Max(a1, b1) + num2, y1, max);
                float y3        = Mathf.Clamp(Mathf.Min(a2, b2) - num2, y1, max);
                float maxValue2 = Mathf.Clamp(Mathf.Max(a2, b2) + num2, y1, max);
                AudioCurveRendering.Sort2(ref minValue2, ref y3);
                AudioCurveRendering.Sort2(ref y2, ref maxValue2);
                AudioCurveRendering.Sort2(ref minValue2, ref y2);
                AudioCurveRendering.Sort2(ref y3, ref maxValue2);
                AudioCurveRendering.Sort2(ref y2, ref y3);
                GL.Color(c);
                AudioMixerDrawUtils.Vertex(x, minValue2);
                GL.Color(col);
                AudioMixerDrawUtils.Vertex(x, y2);
                AudioMixerDrawUtils.Vertex(x, y2);
                AudioMixerDrawUtils.Vertex(x, y3);
                AudioMixerDrawUtils.Vertex(x, y3);
                GL.Color(c);
                AudioMixerDrawUtils.Vertex(x, maxValue2);
                b2 = a2;
                b1 = a1;
            }
            GL.End();
        }