Released 2018-10-08
Major Features
- Added a website hosted at https://kybernetik.com.au/animancer to replace the old PDF User Manual.
- The site includes automatically generated API documentation.
- Added a Unity Bugs section.
- [Pro-Only] Added
AnimatorControllerState
for playingAnimatorController
s, as well asFloatParameterControllerState
for wrapping afloat
parameter and similar classes forVector2
andVector3
. - Added
AnimancerController.UpdateMode
to wrapAnimator.updateMode
for interceptingUnscaledTime
mode. - Added methods for enabling IK to
AnimancerState
.- Added
ClipState.DefaultApplyFootIK
to disable foot IK by default since the Playables API has it enabled by default.
- Added
- Added
WelcomeWindow
to show a link to the documentation when Animancer is first imported or updated. - Added demo scenes for a simple example and a more complex state machine implementation.
Minor Features
- Added
AnimancerPlayable.MaxCrossFadeNewDepth
(default 5) to give usage warnings if it creates too many states for a single clip. - Added
AnimancerPlayable.AddState
(and anAnimancerController
wrapper) to register any state with a given key. - Added
AnimancerState.OutputWeight
which multiplies theWeight
of the state by theWeight
of each of its parents to determine how much it affects the final output of thePlayableGraph
. - Added
AnimancerPlayable.FastComparer
to allow the dictionary of registered states to avoid the slowUnityEngine.Object
overloaded equals operator. - Added
AnimancerPlayable.Evaluate(float deltaTime)
and a wrapper inAnimancerController
. - Added
AnimancerState.RemainingDuration
. - Added
AnimationMixer.NormalizeDurations
to average all child state durations. - [Pro-Only] Added
public AnimancerLayer.Initialize
to re-initialize a layer after it has been disposed.
Improvements
- Massively reworked the Inspector.
- It now hides the referenced
Animator
component if it's on the same object. While hidden, it shows only the fields that are relevant to Animancer with warnings for values that are unsupported.
- It now hides the referenced
- Added
[HelpUrl]
toAnimancerController
now that the documentation is online. - [Editor-Only] Added a max layer count and a warning if you exceed that limit in case you do it unintentionally. The default is 4, but it can be changed with
AnimancerPlayable.SetMaxLayerCount
.
Changes
- Restructured the directory layout to put the editor scripts in the regular assembly (in an
Editor
namespace and #if UNITY_EDITOR regions) so that they can make use ofinternal
members instead of leaving thempublic
. - Removed
WrapMode
support since it didn't work properly.ClipState
now just uses theAnimationClip.isLooping
property which is set in the model's import settings. If you want to emulateWrapMode.Once
you can just stop the animation using theOnEnd
event. - Split
AnimancerController
functionality for playing animations automatically intoLegacyAnimancerController
and combined it withNamedAnimancerController
. - Removed all calls to
AnimancerPlayable.PlayGraph
except the one inAnimancerController.OnEnable
. If the user stops the graph they should be responsible for starting it again and this saves some performance. - Changed
AnimancerState.Duration
to be "The amount of time the animation will take to play fully at its currentSpeed
" instead of just a wrapper around theAnimationClip.length
. - Restructured all states to use constructors instead of
CreateState<T>
so they can havereadonly
fields. - Changed the abstract
AnimancerState.Playable
toGetPlayable()
so that derived classes can use thePlayable
member name for their specificreadonly
playable field.- Added
protected AnimancerState._BasePlayable
field which needs to be set in the child class constructor and removed all the Playable Casts methods.
- Added
- Added
AnimancerState.MainAsset
to show theAnimationClip
in the Inspector forClipState
and theAnimatorController
forAnimatorControllerState
. - [Pro-Only] Changed
AnimancerLayer.AcquirePortIndex
toAddChild
so it can't be called without using the acquired port correctly. - Made
AnimancerState.Time
virtual so that most states do not cache their time since onlyClipStates
actually need to check it every update and soAnimationMixer
s can propogate set time calls to their children. - Added
AnimancerStateInspector
andAnimancerState.GetInspector
so states can define their own overrides of the Inspector behaviour. - Removed
AnimancerPlayable.OnGraphStart
andOnGraphStop
. - Removed
HashedAnimancerController
since it was unlikely to actually be used.
Fixes
- Fixed
ClipState
Inspector time bar and slider to clamp when the animation is not looping. - [Pro-Only]
AnimancerLayer.Stop
now sets theWeight
to 0 for when a layer fade finishes.