Test Releases

This page lists the changes that occured throughout the public tests of Animancer v6.0.

Release Candidate 2

Released 2020-12-04

Release Candidate 1

Released 2020-12-01

  • Improved State Machines:
    • Added null check to the StateMachine constructor that takes a defaultState.
    • Added StateChange.IsActive (same for KeyChange) to check whether a change is currently occurring.
    • Changed StateChange and KeyChange to be [ThreadStatic].
    • Fixed the StateMachine.AllowNullStates flag to actually be checked.
    • Renamed State Machine folder to FSM.
  • Improved Timeline track binding support:
    • Added OptionalWarning.PlayableAssetAnimatorBinding in case a PlayableAssetState tries to bind to the same Animator as Animancer.
    • The IsPlaying state is now propogated onto all tracks.
    • Tracks which don't require an object to bind will now properly create their output and are shown in the Inspector as a simple label without an Object field.
    • If a binding has the wrong type, it is now highlighted as a warning in the Inspector.
  • Changed AnimancerState.IsPlaying to not be virtual and added OnSetIsPlaying instead since only the setter should ever be overridden.
  • Added Live Inspector for Native Animator Controllers.
  • Added AnimancerEvent.Dummy method to use for the DummyCallback so that it has a proper name instead of a compiler generated name for an anonymous method.
  • Renamed AnimancerNode.SetEditorName to SetDebugName to match the DebugName property.
  • Fixed build error due to the AnimancerLayer._Mask field.
  • Fixed AnimationGatherer to work properly.
  • Fixed the AssemblyInfo.cs file to be properly included in Animancer Pro.

Beta 1

Released 2020-11-22

  • Added proper support for Native Animator Controllers (ones assigned to the regular Controller field on the Animator component):
    • Adding an AnimancerComponent no longer clears that field or collapses the Animator Inspector.
    • The AnimancerComponent Inspector no longer displays the Animator fields nested inside itself since they are now all usable and the Controller field doesn't need to be highlighted as a warning.
    • Added AnimancerPlayable.SkipFirstFade to control whether playing an animation with the Base Layer at 0 Weight should snap the Weight to 1 (as it did previously) or allow the fade to play normally (so that it can fade from the native Animator Controller).
    • Removed AnimancerPlayable.LayerList.RespectSingleLayerWeight since it is now handled by AnimancerPlayable.SkipFirstFade.
    • Removed AnimancerEditorUtilities.GetIsInspectorExpanded and SetIsInspectorExpanded since they are now unused. They were just wrappers around UnityEditorInternal.InternalEditorUtility methods anyway.
    • Replaced the Basics/Simple Hybrid example with Animator Controllers/Hybrid Basics.
  • Cleaned up the Game Manager example.
  • Removed AnimancerUtilities.IfMultiComponentThenChangeType.
  • Renamed AnimancerNode.EditorName to DebugName and made it available in Development Builds as well as in the Unity Editor.
  • Renamed AnimancerNode.ApplyParentIK to CopyIKFlags and fixed it to also be called by AnimancerState.SetRoot.
  • Moved UnityVersionChecker into the ReadMe.cs file so that importing Animancer Pro over the top of Animancer Lite won't leave behind the Lite UnityVersionChecker.cs (because it isn't needed in the Pro version).
  • Added Remove function to the event sub-menus of the AnimancerState Inspector context menu.
  • Changed StateMachines to not allow the state to be set to null unless you call SetAllowNullStates first. This assertion is only performed in the Unity Editor and Development Builds.
  • Improved the AnimationGatherer to be able to gather clips and transitions separately.
  • Improved the Generate Transition function to support Sub-State Machines, Layers, and Transitions.
  • Added AnimancerEditorUtilities.IsNaN for Vector2 and Vector3.
  • Fixed the AnimancerState Inspector context menu to disable the Invoke function for events using the AnimancerEvent.DummyCallback.
  • Fixed the TransitionPreviewWindow to properly initialize the camera when the target has no bounds.
  • Fixed TransitionPreviewWindow.GetCurrentState to not throw an exception if the state doesn't exist.

Alpha 3

Released 2020-11-13

  • Added Controller State Generator to Weaver which can procedurally generate a class that inherits from ControllerState with properties for directly accessing the parameters of a specific Animator Controller asset.
  • Added Generate Transition context menu functions on states and Blend Trees inside Animator Controllers which will generate Transition Assets from them.
  • Changed AnimancerState.Duration to properly account for the End Time.
  • Changed AnimancerState.RemainingDuration to properly account for the End Time and negative speeds and not give different results for looping animations since End Events don't work any differently for them.
  • Changed AnimancerUtilities.Wrap01 and AnimancerUtilities.Wrap to not be extension methods since they aren't used that often.
  • Fixed AnimancerUtilities.Wrap01 and Wrap to never return the maximum value (unlike Mathf.Repeat).
  • Fixed AnimancerGUI.DoOptionalTimeToggle to properly indicate when the selected objects have different values.
  • Removed the ability to Ctrl + Shift + Click on states in the Inspector to queue them to Cross Fade in a sequence (and the context menu function) since it was more complex to maintain than its usefulness warranted.
  • Animancer Events:
    • Optimised AnimancerEvent.Sequence methods that search for a particular item.
    • The AnimancerNode context menu now shows the details of all Animancer Events instead of only the End Events.
    • Added a startIndex parameter to AnimancerEvent.Sequence.IndexOf and IndexOfRequired (default value 0).
    • Added equality operators to AnimancerEvent.
    • Added AnimancerEvent.Sequence.Serializable.SetNormalizedEndTime.
    • Added ITransitionDetailed.Events and SerializedEvents.
    • Added context menu functions to the TimeRuler for all the functions that can be executed via keyboard controls.
    • Removed the Inspector toggle from event times which was previously used to remove them.
    • Moved AnimancerEvent.Sequence.Serializable.DummyCallback out to AnimancerEvent.
    • Changed the Add Event button in the Inspector into an X to remove the selected event (while one is selected).
    • Changed AnimancerEvent.Sequence.SetCallback to trigger OptionalWarning.DuplicateEvent if necessary.
    • Changed AnimancerEvent.Sequence methods that modify callbacks to throw an ArgumentNullException if the callback is null rather than just logging an assertion.
    • Fixed AnimancerState.EventRunner to allow events to be assigned before the AnimancerNode.Root is set.
    • Fixed EventSequenceDrawer to avoid causing errors when multiple objects are selected with different values.
    • Fixed AnimancerEvent.Sequence.Serializable.OnBeforeSerialize to not cause an exception if called when there is no Editor.EventSequenceDrawer.Context.Current.
  • State Machines:
    • Added StateMachine<TState>.StateSelector system for managing a prioritised list of potential states.
    • Restored the commented out StateExtensions methods that you can copy into a base state class to implement IOwnedState without the generic argument inference problems the extension methods have.
    • Removed StateExtensions.CanEnterState since it is too similar to the IState.CanEnterState property.
    • Changed the StateMachine<TState>.InputBuffer.StateMachine to a readonly field.
  • Animancer Tools:
    • Changed AnimancerToolsWindow.MoveSpriteBorders into ModifySprites and added fields for changing the Pivot, Alignment, and Borders.
    • Changed AnimancerToolsWindow.ModifySprites to only show the details that will actually be modified.
    • Fixed AnimancerToolsWindow.ModifySprites to not allow Sprites to be moved out of the texture bounds.
    • Fixed AnimancerToolsWindow.RenameSprites to work properly.
    • Fixed AnimancerToolsWindow.RemapAnimationBindings to not use cached bindings since they can be out of date.
  • Inverse Kinematics:
    • Changed AnimancerPlayable, AnimancerLayer, and MixerState to store whatever IK flags you set (ApplyAnimatorIK and ApplyFootIK) so that when a child is added it can get the same flags.
    • You can disable the static AnimancerNode.ApplyParentAnimatorIK and ApplyParentFootIK properties to prevent children from receiving their parent's flags.
    • Added the IK flags to AnimancerNode.AppendDescription.
    • Removed IHasIK and merged it into IPlayableWrapper.
    • Removed AnimancerPlayable.DefaultApplyAnimatorIK and DefaultApplyFootIK.

Alpha 2

Released 2020-11-06

  • Added AnimancerEvent.Sequence.RemoveCallback. #77
  • Added FSM.StateChangeDebug which performs Assert-Only checks to ensure that you access the correct StateChange type.
    • Same for KeyChangeDebug which validates KeyChanges.
  • Fixed ManualMixerTransition.Drawer.DoClipOrTransitionField to allow the value to be set to null.
  • Fixed the keyed StateMachine to properly register the default state provided in the constructor.

Alpha 1

Released 2020-11-05

First public test release (see the v6.0 Change Log for the full list of changes since v5.3).