This page lists the changes that occured throughout the public tests of Animancer v6.0.
Release Candidate 2
Released 2020-12-04
- Renamed
AnimancerLayer.Play(object)
toTryPlay
to match the name used inAnimancerPlayable
andAnimancerComponent
. - The Time bars displayed on states in the
AnimancerComponent
Inspector now scale their height proportional to theAnimancerNode.EffectiveWeight
.- Added a Display Option in the context menu to disable that feature.
- Added explicit warning for the missing animation in the
NamedAnimations
example.
Release Candidate 1
Released 2020-12-01
- Improved State Machines:
- Added null check to the
StateMachine
constructor that takes adefaultState
. - Added
StateChange.IsActive
(same forKeyChange
) to check whether a change is currently occurring. - Changed
StateChange
andKeyChange
to be[ThreadStatic]
. - Fixed the
StateMachine.AllowNullStates
flag to actually be checked. - Renamed State Machine folder to FSM.
- Added null check to the
- Improved Timeline track binding support:
- Added
OptionalWarning.PlayableAssetAnimatorBinding
in case aPlayableAssetState
tries to bind to the sameAnimator
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.
- Added
- Changed
AnimancerState.IsPlaying
to not bevirtual
and addedOnSetIsPlaying
instead since only the setter should ever be overridden. - Added Live Inspector for Native Animator Controllers.
- Added
AnimancerEvent.Dummy
method to use for theDummyCallback
so that it has a proper name instead of a compiler generated name for an anonymous method. - Renamed
AnimancerNode.SetEditorName
toSetDebugName
to match theDebugName
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 theAnimator
component):- Adding an
AnimancerComponent
no longer clears that field or collapses theAnimator
Inspector. - The
AnimancerComponent
Inspector no longer displays theAnimator
fields nested inside itself since they are now all usable and theController
field doesn't need to be highlighted as a warning. - Added
AnimancerPlayable.SkipFirstFade
to control whether playing an animation with the Base Layer at 0Weight
should snap theWeight
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 byAnimancerPlayable.SkipFirstFade
. - Removed
AnimancerEditorUtilities.GetIsInspectorExpanded
andSetIsInspectorExpanded
since they are now unused. They were just wrappers aroundUnityEditorInternal.InternalEditorUtility
methods anyway. - Replaced the Basics/Simple Hybrid example with Animator Controllers/Hybrid Basics.
- Adding an
- Cleaned up the
Game Managerexample. - Removed
AnimancerUtilities.IfMultiComponentThenChangeType
. - Renamed
AnimancerNode.EditorName
toDebugName
and made it available in Development Builds as well as in the Unity Editor. - Renamed
AnimancerNode.ApplyParentIK
toCopyIKFlags
and fixed it to also be called byAnimancerState.SetRoot
. - Moved
UnityVersionChecker
into theReadMe.cs
file so that importing Animancer Pro over the top of Animancer Lite won't leave behind the LiteUnityVersionChecker.cs
(because it isn't needed in the Pro version). - Added
Remove
function to the event sub-menus of theAnimancerState
Inspector context menu. - Changed
StateMachine
s to not allow the state to be set to null unless you callSetAllowNullStates
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
forVector2
andVector3
. - Fixed the
AnimancerState
Inspector context menu to disable theInvoke
function for events using theAnimancerEvent.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
andAnimancerUtilities.Wrap
to not be extension methods since they aren't used that often. - Fixed
AnimancerUtilities.Wrap01
andWrap
to never return the maximum value (unlikeMathf.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 toAnimancerEvent.Sequence.IndexOf
andIndexOfRequired
(default value 0). - Added equality operators to
AnimancerEvent
. - Added
AnimancerEvent.Sequence.Serializable.SetNormalizedEndTime
. - Added
ITransitionDetailed.Events
andSerializedEvents
. - 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 toAnimancerEvent
. - 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 triggerOptionalWarning.DuplicateEvent
if necessary. - Changed
AnimancerEvent.Sequence
methods that modify callbacks to throw anArgumentNullException
if the callback is null rather than just logging an assertion. - Fixed
AnimancerState.EventRunner
to allow events to be assigned before theAnimancerNode.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 noEditor.EventSequenceDrawer.Context.Current
.
- Optimised
- 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 implementIOwnedState
without the generic argument inference problems the extension methods have. - Removed
StateExtensions.CanEnterState
since it is too similar to theIState.CanEnterState
property. - Changed the
StateMachine<TState>.InputBuffer.StateMachine
to a readonly field.
- Added
- Animancer Tools:
- Changed
AnimancerToolsWindow.MoveSpriteBorders
intoModifySprites
and added fields for changing thePivot
,Alignment
, andBorders
. - Changed
AnimancerToolsWindow.ModifySprites
to only show the details that will actually be modified. - Fixed
AnimancerToolsWindow.ModifySprites
to not allowSprite
s 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.
- Changed
- Inverse Kinematics:
- Changed
AnimancerPlayable
,AnimancerLayer
, andMixerState
to store whatever IK flags you set (ApplyAnimatorIK
andApplyFootIK
) so that when a child is added it can get the same flags. - You can disable the static
AnimancerNode.ApplyParentAnimatorIK
andApplyParentFootIK
properties to prevent children from receiving their parent's flags. - Added the IK flags to
AnimancerNode.AppendDescription
. - Removed
IHasIK
and merged it intoIPlayableWrapper
. - Removed
AnimancerPlayable.DefaultApplyAnimatorIK
andDefaultApplyFootIK
.
- Changed
Alpha 2
Released 2020-11-06
- Added
AnimancerEvent.Sequence.RemoveCallback
. #77- Moved
AnimancerEvent.Sequence.Serializable.DummyCallback
out toAnimancerEvent.Sequence
.
- Moved
- Added
FSM.StateChangeDebug
which performs Assert-Only checks to ensure that you access the correctStateChange
type.- Same for
KeyChangeDebug
which validatesKeyChange
s.
- Same for
- Fixed
ManualMixerTransition.Drawer.DoClipOrTransitionField
to allow the value to be set tonull
. - 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).