Animancer v8.4

When upgrading to a newer version of Animancer, you must delete any previous version from your project first.

See the Animancer v8.0 Upgrade Guide if you're upgrading from a version older than that.

Minor Breaking Change

  • Any Transition Library Groups created in previous versions will forget which transitions they contained. This is an unfortunate side effect of fixing the underlying data structure to make the whole system more stable.

Features

  • Added proper async/await support. #464
    • Added a new Async and Coroutines page to explain these new features.
    • The ability to yield return an AnimancerState in a coroutine to wait for it to pass its end time has existed since the initial release of Animancer.
    • Changed this behaviour to continue the coroutine if the TargetWeight is 0 rather than if the state is paused.
      • Pausing a state will now keep yielding in coroutines that are waiting for it.
      • Playing a different animation will now immediately continue execution of coroutines that are waiting for it instead of yielding until the previous animation finishes fading out.
    • You can now await an AnimancerState in an async method to do the same.
    • await and yield return can now use state.Await(...) where you specify a normalized time or an Animancer Event name to wait for.
    • Using await on a state or state.Await(...) will also return a result indicating whether the state successfully reached its target time. For example:
      • bool success = await state;
      • true indicates that the state passed its end time.
      • false indicates that the state was interrupted by something else.
    • Renamed AnimancerNode.IsPlayingAndNotEnding to IsApproachingEnd.
    • Added IsApproachingTime.
  • Added an On Play Event for debugging.
    • By default, this event only exists in the Unity Editor and in Development Builds.
    • To enable it in regular Release Builds, go to Edit -> Project Settings -> Player -> Other Settings -> Scripting Define Symbols and add ANIMANCER_ON_PLAY_EVENTS to the list.
    • The primary use case for this event is logging with the utility methods animancerComponent.OnPlay += AnimancerState.LogPlayingMessage; or LogPlayingMessageDetailed.
  • Changed the Transition Preview Window to remember the last camera location by default instead of always resetting to the default focus position.
    • The old behaviour can be restored by enabling Auto Focus Camera in the Settings tab.
  • Added the ability to replace Transitions in a Transition Library while keeping any modifiers or aliases which reference them.

Improvements

Fixes

  • Fixed an incorrect warning about serialization cycles in Unity 6.5 caused by TransitionLibraryModifiersPage.
  • Fixed AnimancerEvent.Parameter to be [Serializable] so it doesn't cause warnings in Unity 6.4.
  • Fixed handling of the Unity 6.3 change from Instance IDs to Entity IDs. #463
  • Fixed various potential issues with static fields in case the Play Mode Domain Reload is disabled. #460
  • Fixed AnimancerUtilities.InitializeSingleton to properly re-initialize in Play Mode if an existing instance was created in Edit Mode.
  • Transition Libraries:
    • Fixed runtime initialization to properly account for the indices of missing Transitions when assigning modifiers.
    • Fixed the drag and drop system in the to be more reliable without causing unexpected changes.
    • Fixed selection to not deselect groups on domain reload.
    • Fixed selection to properly highlight grouped Transitions.
    • Fixed the window to draw missing Transitions so they can be removed.