UnityEditor.TransitionPreview.DoTimeline C# (CSharp) Method

DoTimeline() private method

private DoTimeline ( ) : void
return void
        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);
                }
            }
        }