using System; // require keep for Windows Universal App using UnityEngine; namespace UniRx.Triggers { [DisallowMultipleComponent] public class ObservableAnimatorTrigger : ObservableTriggerBase { Subject onAnimatorIK; /// Callback for setting up animation IK (inverse kinematics). void OnAnimatorIK(int layerIndex) { if (onAnimatorIK != null) onAnimatorIK.OnNext(layerIndex); } /// Callback for setting up animation IK (inverse kinematics). public IObservable OnAnimatorIKAsObservable() { return onAnimatorIK ?? (onAnimatorIK = new Subject()); } Subject onAnimatorMove; /// Callback for processing animation movements for modifying root motion. void OnAnimatorMove() { if (onAnimatorMove != null) onAnimatorMove.OnNext(Unit.Default); } /// Callback for processing animation movements for modifying root motion. public IObservable OnAnimatorMoveAsObservable() { return onAnimatorMove ?? (onAnimatorMove = new Subject()); } protected override void RaiseOnCompletedOnDestroy() { if (onAnimatorIK != null) { onAnimatorIK.OnCompleted(); } if (onAnimatorMove != null) { onAnimatorMove.OnCompleted(); } } } }