public static void DrawCurve(Rect r, AudioCurveRendering.AudioCurveEvaluator eval, Color curveColor) { if (Event.current.type == EventType.Repaint) { HandleUtility.ApplyWireMaterial(); int num = (int)Mathf.Ceil(r.width); float num2 = r.height * 0.5f; float num3 = 1f / (float)(num - 1); Vector3[] pointCache = AudioCurveRendering.GetPointCache(num); for (int i = 0; i < num; i++) { pointCache[i].x = (float)i + r.x; pointCache[i].y = num2 - num2 * eval((float)i * num3) + r.y; pointCache[i].z = 0f; } GUI.BeginClip(r); Handles.color = curveColor; Handles.DrawAAPolyLine(3f, num, pointCache); GUI.EndClip(); } }