private void DoOptimizeCurveButton(Rect rect)
{
if (!this.m_CurveEditor.IsDraggingCurveOrRegion())
{
Rect position = new Rect((rect.xMax - 10f) - 14f, rect.y + ((rect.height - 14f) * 0.5f), 14f, 14f);
int num = 0;
List<CurveSelection> selectedCurves = this.m_CurveEditor.selectedCurves;
if (selectedCurves.Count > 0)
{
for (int i = 0; i < selectedCurves.Count; i++)
{
CurveWrapper curveWrapperFromSelection = this.m_CurveEditor.GetCurveWrapperFromSelection(selectedCurves[i]);
num += !AnimationUtility.IsValidPolynomialCurve(curveWrapperFromSelection.curve) ? 0 : 1;
}
if ((selectedCurves.Count != num) && GUI.Button(position, s_Styles.optimizeCurveText, s_Styles.plus))
{
for (int j = 0; j < selectedCurves.Count; j++)
{
CurveWrapper wrapper2 = this.m_CurveEditor.GetCurveWrapperFromSelection(selectedCurves[j]);
if (!AnimationUtility.IsValidPolynomialCurve(wrapper2.curve))
{
wrapper2.curve.preWrapMode = WrapMode.Once;
wrapper2.curve.postWrapMode = WrapMode.Once;
wrapper2.renderer.SetWrap(WrapMode.Once, WrapMode.Once);
AnimationUtility.ConstrainToPolynomialCurve(wrapper2.curve);
wrapper2.changed = true;
}
}
this.m_CurveEditor.SelectNone();
}
}
else
{
int num4;
if (this.m_CurveEditor.GetTopMostCurveID(out num4))
{
CurveWrapper curveWrapperFromID = this.m_CurveEditor.GetCurveWrapperFromID(num4);
if (!AnimationUtility.IsValidPolynomialCurve(curveWrapperFromID.curve) && GUI.Button(position, s_Styles.optimizeCurveText, s_Styles.plus))
{
curveWrapperFromID.curve.preWrapMode = WrapMode.Once;
curveWrapperFromID.curve.postWrapMode = WrapMode.Once;
curveWrapperFromID.renderer.SetWrap(WrapMode.Once, WrapMode.Once);
AnimationUtility.ConstrainToPolynomialCurve(curveWrapperFromID.curve);
curveWrapperFromID.changed = true;
}
}
}
}
}