public static void SetAnimationClip(FPlayAnimationEvent animEvent, AnimationClip animClip) { FAnimationEventInspector editor = (FAnimationEventInspector)CreateEditor(animEvent, typeof(FAnimationEventInspector)); editor.SetAnimationClip(animClip); DestroyImmediate(editor); FAnimationTrackInspector.RebuildStateMachine((FAnimationTrack)animEvent.GetTrack()); }
public override void OnTrackChanged() { // Debug.LogWarning("FAnimationTrackEditor.OnTrackChanged"); bool isPreviewing = _track.IsPreviewing; if (isPreviewing) { _track.IsPreviewing = false; } FAnimationTrackInspector.RebuildStateMachine((FAnimationTrack)_track); if (isPreviewing) { _track.IsPreviewing = true; } }
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(); } }
private void RebuildAnimationTrack() { FAnimationTrackInspector.RebuildStateMachine((FAnimationTrack)_animEvt.GetTrack()); }