private void DoTimeline()
{
if (this.m_ValidTransition)
{
float num = (this.m_LeftStateTimeB - this.m_LeftStateTimeA) / (this.m_LeftStateWeightB - this.m_LeftStateWeightA);
float num2 = (this.m_RightStateTimeB - this.m_RightStateTimeA) / (this.m_RightStateWeightB - this.m_RightStateWeightA);
float num3 = this.m_Transition.duration * (!this.m_RefTransition.hasFixedDuration ? num : 1f);
this.m_Timeline.SrcStartTime = 0f;
this.m_Timeline.SrcStopTime = num;
this.m_Timeline.SrcName = this.m_RefSrcState.name;
this.m_Timeline.HasExitTime = this.m_RefTransition.hasExitTime;
this.m_Timeline.srcLoop = (this.m_SrcMotion != null) && this.m_SrcMotion.isLooping;
this.m_Timeline.dstLoop = (this.m_DstMotion != null) && this.m_DstMotion.isLooping;
this.m_Timeline.TransitionStartTime = this.m_RefTransition.exitTime * num;
this.m_Timeline.TransitionStopTime = this.m_Timeline.TransitionStartTime + num3;
this.m_Timeline.Time = this.m_AvatarPreview.timeControl.currentTime;
this.m_Timeline.DstStartTime = this.m_Timeline.TransitionStartTime - (this.m_RefTransition.offset * num2);
this.m_Timeline.DstStopTime = this.m_Timeline.DstStartTime + num2;
this.m_Timeline.SampleStopTime = this.m_AvatarPreview.timeControl.stopTime;
if (this.m_Timeline.TransitionStopTime == float.PositiveInfinity)
{
this.m_Timeline.TransitionStopTime = Mathf.Min(this.m_Timeline.DstStopTime, this.m_Timeline.SrcStopTime);
}
this.m_Timeline.DstName = this.m_RefDstState.name;
this.m_Timeline.SrcPivotList = this.m_SrcPivotList;
this.m_Timeline.DstPivotList = this.m_DstPivotList;
Rect timeRect = EditorGUILayout.GetControlRect(false, 150f, EditorStyles.label, new GUILayoutOption[0]);
EditorGUI.BeginChangeCheck();
bool flag = this.m_Timeline.DoTimeline(timeRect);
if (EditorGUI.EndChangeCheck())
{
if (flag)
{
Undo.RegisterCompleteObjectUndo(this.m_RefTransition, "Edit Transition");
this.m_RefTransition.exitTime = this.m_Timeline.TransitionStartTime / this.m_Timeline.SrcDuration;
this.m_RefTransition.duration = this.m_Timeline.TransitionDuration / (!this.m_RefTransition.hasFixedDuration ? this.m_Timeline.SrcDuration : 1f);
this.m_RefTransition.offset = (this.m_Timeline.TransitionStartTime - this.m_Timeline.DstStartTime) / this.m_Timeline.DstDuration;
}
this.m_AvatarPreview.timeControl.nextCurrentTime = Mathf.Clamp(this.m_Timeline.Time, 0f, this.m_AvatarPreview.timeControl.stopTime);
}
}
}