public static void DrawFilledCurve(Rect r, AudioCurveRendering.AudioCurveAndColorEvaluator eval)
        {
            if (Event.current.type != EventType.Repaint)
            {
                return;
            }
            HandleUtility.ApplyWireMaterial();
            GL.Begin(1);
            float num  = 1f / (r.width - 1f);
            float num2 = r.height * 0.5f;
            Color c;
            float num3 = r.y + Mathf.Clamp(num2 - num2 * eval(0.0001f, out c), 0f, r.height);
            int   num4 = 0;

            while ((float)num4 < r.width)
            {
                float num5 = (float)((int)r.x + num4);
                float num6 = r.y + Mathf.Clamp(num2 - num2 * eval((float)num4 * num, out c), 0f, r.height);
                GL.Color(c);
                AudioMixerDrawUtils.Vertex(num5, (float)((int)Mathf.Ceil(num6)));
                AudioMixerDrawUtils.Vertex(num5, r.y + r.height);
                if (Mathf.Abs(num3 - num6) <= 1f)
                {
                    GL.Color(new Color(c.r, c.g, c.b, c.a * (Mathf.Ceil(num6) - num6)));
                    AudioMixerDrawUtils.Vertex(num5, Mathf.Ceil(num6) - 1f);
                    AudioMixerDrawUtils.Vertex(num5, Mathf.Ceil(num6));
                }
                else
                {
                    if (num3 < num6)
                    {
                        GL.Color(new Color(c.r, c.g, c.b, 0f));
                        AudioMixerDrawUtils.Vertex(num5, Mathf.Ceil(num3));
                        GL.Color(c);
                        AudioMixerDrawUtils.Vertex(num5, Mathf.Ceil(num6));
                    }
                    else
                    {
                        GL.Color(new Color(c.r, c.g, c.b, 0f));
                        AudioMixerDrawUtils.Vertex(num5 - 1f, Mathf.Ceil(num6));
                        GL.Color(c);
                        AudioMixerDrawUtils.Vertex(num5 - 1f, Mathf.Ceil(num3));
                    }
                }
                num3 = num6;
                num4++;
            }
            GL.End();
        }
예제 #2
0
        public static void DrawSymmetricFilledCurve(Rect r, AudioCurveRendering.AudioCurveAndColorEvaluator eval)
        {
            if (Event.current.type != EventType.Repaint)
            {
                return;
            }
            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 b    = Mathf.Clamp(num7 * eval(0.0001f, out c), 0f, num7);
            int   num9 = 0;

            while ((float)num9 < num4)
            {
                float x     = num5 + (float)num9 * num2;
                float num10 = Mathf.Clamp(num7 * eval((float)num9 * num6, out c), 0f, num7);
                float num11 = Mathf.Max(Mathf.Min(num10, b) - num3, 0f);
                float num12 = Mathf.Min(Mathf.Max(num10, b) + num3, num7);
                Color c2    = new Color(c.r, c.g, c.b, 0f);
                GL.Color(c2);
                AudioMixerDrawUtils.Vertex(x, num8 - num12);
                GL.Color(c);
                AudioMixerDrawUtils.Vertex(x, num8 - num11);
                AudioMixerDrawUtils.Vertex(x, num8 - num11);
                AudioMixerDrawUtils.Vertex(x, num8 + num11);
                AudioMixerDrawUtils.Vertex(x, num8 + num11);
                GL.Color(c2);
                AudioMixerDrawUtils.Vertex(x, num8 + num12);
                b = num10;
                num9++;
            }
            GL.End();
        }
예제 #3
0
        static void DoRenderPreview(AudioClip clip, Rect rect)
        {
            var samples = new float[clip.samples];

            clip.GetData(samples, 0);

            AudioCurveRendering.AudioCurveAndColorEvaluator dlg =
                delegate(float x, out Color color) {
                color = curveColor;
                if (clip.samples <= 0)
                {
                    return(0);
                }
                var p = Mathf.FloorToInt(Mathf.Clamp(x * (clip.samples - 1), 0.0f, clip.samples - 1));
                return(samples[p]);
            };

            rect = AudioCurveRendering.BeginCurveFrame(rect);
            AudioCurveRendering.DrawSymmetricFilledCurve(rect, dlg);
            AudioCurveRendering.EndCurveFrame();
        }
예제 #4
0
        public static void DrawSymmetricFilledCurve(Rect r, AudioCurveRendering.AudioCurveAndColorEvaluator eval)
        {
            if (Event.current.type != EventType.Repaint)
            {
                return;
            }
            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 b = Mathf.Clamp(num6 * eval(0.0001f, out col), 0.0f, num6);

            for (int index = 0; (double)index < (double)num3; ++index)
            {
                float x    = num4 + (float)index * num1;
                float a    = Mathf.Clamp(num6 * eval((float)index * num5, out col), 0.0f, num6);
                float num8 = Mathf.Max(Mathf.Min(a, b) - num2, 0.0f);
                float num9 = Mathf.Min(Mathf.Max(a, b) + num2, num6);
                Color c    = new Color(col.r, col.g, col.b, 0.0f);
                GL.Color(c);
                AudioMixerDrawUtils.Vertex(x, num7 - num9);
                GL.Color(col);
                AudioMixerDrawUtils.Vertex(x, num7 - num8);
                AudioMixerDrawUtils.Vertex(x, num7 - num8);
                AudioMixerDrawUtils.Vertex(x, num7 + num8);
                AudioMixerDrawUtils.Vertex(x, num7 + num8);
                GL.Color(c);
                AudioMixerDrawUtils.Vertex(x, num7 + num9);
                b = a;
            }
            GL.End();
        }
예제 #5
0
        public static void DrawSymmetricFilledCurve(Rect r, AudioCurveRendering.AudioCurveAndColorEvaluator eval)
        {
            if (Event.current.type != EventType.Repaint)
            {
                return;
            }
            HandleUtility.ApplyWireMaterial();
            GL.Begin(1);
            float num  = EditorGUIUtility.pixelsPerPoint;
            float num2 = 1f / num;
            float num3 = r.width * num;
            float num4 = 1f / (num3 - 1f);
            float num5 = r.height * 0.5f;
            float num6 = r.y + 0.5f * r.height;
            Color c;
            float num7 = Mathf.Clamp(num5 * eval(0.0001f, out c), 0f, num5);
            int   num8 = 0;

            while ((float)num8 < num3)
            {
                float x     = Mathf.Floor(r.x) + (float)num8 * num2;
                float num9  = Mathf.Clamp(num5 * eval((float)num8 * num4, out c), 0f, num5);
                float num10 = (num9 >= num7) ? num7 : num9;
                float num11 = (num9 <= num7) ? num7 : num9;
                GL.Color(new Color(c.r, c.g, c.b, 0f));
                AudioMixerDrawUtils.Vertex(x, num6 + num11);
                GL.Color(c);
                AudioMixerDrawUtils.Vertex(x, num6 + num10);
                AudioMixerDrawUtils.Vertex(x, num6 + num10);
                AudioMixerDrawUtils.Vertex(x, num6 - num10);
                AudioMixerDrawUtils.Vertex(x, num6 - num10);
                GL.Color(new Color(c.r, c.g, c.b, 0f));
                AudioMixerDrawUtils.Vertex(x, num6 - num11);
                num7 = num9;
                num8++;
            }
            GL.End();
        }
        public static void DrawSymmetricFilledCurve(Rect r, AudioCurveRendering.AudioCurveAndColorEvaluator eval)
        {
            if (Event.current.type != EventType.Repaint)
            {
                return;
            }
            HandleUtility.ApplyWireMaterial();
            GL.Begin(1);
            float num  = 1f / (r.width - 1f);
            float num2 = r.height * 0.5f;
            float y    = r.y;
            float num3 = r.y + r.height;
            Color c;
            float num4 = Mathf.Clamp(num2 - num2 * eval(0.0001f, out c), 0f, num2);
            int   num5 = 0;

            while ((float)num5 < r.width)
            {
                float num6 = (float)((int)r.x + num5);
                float num7 = Mathf.Clamp(num2 - num2 * eval((float)num5 * num, out c), 0f, num2);
                GL.Color(c);
                AudioMixerDrawUtils.Vertex(num6, y + (float)((int)Mathf.Ceil(num7)));
                AudioMixerDrawUtils.Vertex(num6, num3 - (float)((int)Mathf.Ceil(num7)));
                if (Mathf.Abs(num4 - num7) <= 1f)
                {
                    GL.Color(new Color(c.r, c.g, c.b, c.a * (Mathf.Ceil(num7) - num7)));
                    AudioMixerDrawUtils.Vertex(num6, y + Mathf.Ceil(num7) - 1f);
                    AudioMixerDrawUtils.Vertex(num6, y + Mathf.Ceil(num7));
                    AudioMixerDrawUtils.Vertex(num6, num3 - Mathf.Ceil(num7) + 1f);
                    AudioMixerDrawUtils.Vertex(num6, num3 - Mathf.Ceil(num7));
                }
                else
                {
                    if (num4 < num7)
                    {
                        GL.Color(new Color(c.r, c.g, c.b, 0f));
                        AudioMixerDrawUtils.Vertex(num6, y + Mathf.Ceil(num4));
                        GL.Color(c);
                        AudioMixerDrawUtils.Vertex(num6, y + Mathf.Ceil(num7));
                        GL.Color(new Color(c.r, c.g, c.b, 0f));
                        AudioMixerDrawUtils.Vertex(num6, num3 - Mathf.Ceil(num4) - 1f);
                        GL.Color(c);
                        AudioMixerDrawUtils.Vertex(num6, num3 - Mathf.Ceil(num7) - 1f);
                    }
                    else
                    {
                        GL.Color(new Color(c.r, c.g, c.b, 0f));
                        AudioMixerDrawUtils.Vertex(num6 - 1f, y + Mathf.Ceil(num7));
                        GL.Color(c);
                        AudioMixerDrawUtils.Vertex(num6 - 1f, y + Mathf.Ceil(num4));
                        GL.Color(new Color(c.r, c.g, c.b, 0f));
                        AudioMixerDrawUtils.Vertex(num6 - 1f, num3 - Mathf.Ceil(num7) - 1f);
                        GL.Color(c);
                        AudioMixerDrawUtils.Vertex(num6 - 1f, num3 - Mathf.Ceil(num4) - 1f);
                    }
                }
                num4 = num7;
                num5++;
            }
            GL.End();
        }