internal static void CalculateQualityCurves(AnimationClip clip, QualityCurvesTime time, Vector2[] poseCurve, Vector2[] rotationCurve, Vector2[] heightCurve, Vector2[] positionCurve)
        {
            if (poseCurve.Length != rotationCurve.Length || rotationCurve.Length != heightCurve.Length || heightCurve.Length != positionCurve.Length)
            {
                throw new ArgumentException(string.Format(
                                                "poseCurve '{0}', rotationCurve '{1}', heightCurve '{2}' and positionCurve '{3}' Length must be equals.",
                                                poseCurve.Length, rotationCurve.Length, heightCurve.Length, positionCurve.Length));
            }

            CalculateQualityCurves(clip, time.fixedTime, time.variableEndStart, time.variableEndEnd, time.q, poseCurve, rotationCurve, heightCurve, positionCurve);
        }
 public static extern void CalculateQualityCurves(AnimationClip clip, QualityCurvesTime time, Vector2[] poseCurve, Vector2[] rotationCurve, Vector2[] heightCurve, Vector2[] positionCurve);
 public static extern void CalculateQualityCurves(AnimationClip clip, QualityCurvesTime time, Vector2[] poseCurve, Vector2[] rotationCurve, Vector2[] heightCurve, Vector2[] positionCurve);
 private void CalculateQualityCurves()
 {
     for (int i = 0; i < 4; i++)
     {
         this.m_QualityCurves[i] = new Vector2[2][];
     }
     for (int j = 0; j < 2; j++)
     {
         float num3 = Mathf.Clamp(this.m_ClipInfo.firstFrame / this.m_Clip.frameRate, this.m_Clip.startTime, this.m_Clip.stopTime);
         float num4 = Mathf.Clamp(this.m_ClipInfo.lastFrame / this.m_Clip.frameRate, this.m_Clip.startTime, this.m_Clip.stopTime);
         float num5 = (j != 0) ? num3 : num4;
         float num6 = (j != 0) ? num3 : 0f;
         float num7 = (j != 0) ? this.m_Clip.length : num4;
         int num8 = Mathf.FloorToInt(num6 * 60f);
         int num9 = Mathf.CeilToInt(num7 * 60f);
         this.m_QualityCurves[0][j] = new Vector2[(num9 - num8) + 1];
         this.m_QualityCurves[1][j] = new Vector2[(num9 - num8) + 1];
         this.m_QualityCurves[2][j] = new Vector2[(num9 - num8) + 1];
         this.m_QualityCurves[3][j] = new Vector2[(num9 - num8) + 1];
         QualityCurvesTime time = new QualityCurvesTime {
             fixedTime = num5,
             variableEndStart = num6,
             variableEndEnd = num7,
             q = j
         };
         MuscleClipEditorUtilities.CalculateQualityCurves(this.m_Clip, time, this.m_QualityCurves[0][j], this.m_QualityCurves[1][j], this.m_QualityCurves[2][j], this.m_QualityCurves[3][j]);
     }
     this.m_DirtyQualityCurves = false;
 }