private void UpdateEventFromController() { bool isBlending = _animEvt.IsBlending(); if (isBlending) { // FPlayAnimationEvent prevAnimEvt = (FPlayAnimationEvent)_animTrack.GetEvents()[_animEvt.GetId() - 1]; if (_transitionToState == null) { _transitionToState = FAnimationTrackInspector.GetTransitionTo(_animEvt); if (_transitionToState == null) { // if( animTrackEditor.PreviewInSceneView ) // animTrackEditor.ClearPreview(); FAnimationTrackInspector.RebuildStateMachine((FAnimationTrack)_trackEditor._track); _transitionToState = FAnimationTrackInspector.GetTransitionTo(_animEvt); } } if (_transitionSO == null) { if (_transitionToState != null) { _transitionSO = new SerializedObject(_transitionToState); // SerializedProperty p = _transitionSO.GetIterator(); // // while( p.Next( true ) ) // Debug.Log (p.propertyPath ); _transitionDuration = _transitionSO.FindProperty("m_TransitionDuration"); _transitionOffset = _transitionSO.FindProperty("m_TransitionOffset"); _transitionConditions = _transitionSO.FindProperty("m_Conditions"); } } else if (_transitionSO.targetObject == null) { _transitionDuration = null; _transitionOffset = null; _transitionConditions = null; _transitionSO = null; } } else { if (_transitionToState != null || _transitionSO != null) { _transitionToState = null; _transitionSO = null; _transitionOffset = null; _transitionDuration = null; _transitionConditions = null; } } if (_transitionSO != null) { _transitionSO.Update(); _animEvtSO.Update(); FPlayAnimationEvent prevAnimEvt = (FPlayAnimationEvent)_animTrack.GetEvents()[_animEvt.GetId() - 1]; AnimationClip prevAnimEvtClip = prevAnimEvt._animationClip; if (prevAnimEvtClip != null) { float exitTimeNormalized = (prevAnimEvt.Length / prevAnimEvtClip.frameRate) / prevAnimEvtClip.length; SerializedProperty exitTime = _transitionConditions.GetArrayElementAtIndex(0).FindPropertyRelative("m_ExitTime"); if (!Mathf.Approximately(exitTimeNormalized, exitTime.floatValue)) { exitTime.floatValue = exitTimeNormalized; } float blendNormalized = (_blendLength.intValue / prevAnimEvtClip.frameRate) / prevAnimEvtClip.length; if (!Mathf.Approximately(blendNormalized, _transitionDuration.floatValue)) { _blendLength.intValue = Mathf.Clamp(Mathf.RoundToInt(_transitionDuration.floatValue * prevAnimEvtClip.length * prevAnimEvtClip.frameRate), 0, _animEvt.Length); _transitionDuration.floatValue = (_blendLength.intValue / prevAnimEvtClip.frameRate) / prevAnimEvtClip.length; _animEvtSO.ApplyModifiedProperties(); } } _transitionSO.ApplyModifiedProperties(); } }
public AnimatorStateTransition(AnimatorStateMachine sm, AnimatorState parentSate, UnityEditor.Animations.AnimatorTransition t) : this(sm, parentSate, (UnityEditor.Animations.AnimatorTransitionBase)t) { }