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
AnimatorControllerStatefor playingAnimatorControllers, as well asFloatParameterControllerStatefor wrapping afloatparameter and similar classes forVector2andVector3. - Added
AnimancerController.UpdateModeto wrapAnimator.updateModefor interceptingUnscaledTimemode. - Added methods for enabling IK to
AnimancerState.- Added
ClipState.DefaultApplyFootIKto disable foot IK by default since the Playables API has it enabled by default.
- Added
- Added
WelcomeWindowto 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 anAnimancerControllerwrapper) to register any state with a given key. - Added
AnimancerState.OutputWeightwhich multiplies theWeightof the state by theWeightof each of its parents to determine how much it affects the final output of thePlayableGraph. - Added
AnimancerPlayable.FastComparerto allow the dictionary of registered states to avoid the slowUnityEngine.Objectoverloaded equals operator. - Added
AnimancerPlayable.Evaluate(float deltaTime)and a wrapper inAnimancerController. - Added
AnimancerState.RemainingDuration. - Added
AnimationMixer.NormalizeDurationsto average all child state durations. - [Pro-Only] Added
public AnimancerLayer.Initializeto re-initialize a layer after it has been disposed.
Improvements
- Massively reworked the Inspector.
- It now hides the referenced
Animatorcomponent 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]toAnimancerControllernow 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
Editornamespace and #if UNITY_EDITOR regions) so that they can make use ofinternalmembers instead of leaving thempublic. - Removed
WrapModesupport since it didn't work properly.ClipStatenow just uses theAnimationClip.isLoopingproperty which is set in the model's import settings. If you want to emulateWrapMode.Onceyou can just stop the animation using theOnEndevent. - Split
AnimancerControllerfunctionality for playing animations automatically intoLegacyAnimancerControllerand combined it withNamedAnimancerController. - Removed all calls to
AnimancerPlayable.PlayGraphexcept 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.Durationto 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 havereadonlyfields. - Changed the abstract
AnimancerState.PlayabletoGetPlayable()so that derived classes can use thePlayablemember name for their specificreadonlyplayable field.- Added
protected AnimancerState._BasePlayablefield which needs to be set in the child class constructor and removed all the Playable Casts methods.
- Added
- Added
AnimancerState.MainAssetto show theAnimationClipin the Inspector forClipStateand theAnimatorControllerforAnimatorControllerState. - [Pro-Only] Changed
AnimancerLayer.AcquirePortIndextoAddChildso it can't be called without using the acquired port correctly. - Made
AnimancerState.Timevirtual so that most states do not cache their time since onlyClipStatesactually need to check it every update and soAnimationMixers can propogate set time calls to their children. - Added
AnimancerStateInspectorandAnimancerState.GetInspectorso states can define their own overrides of the Inspector behaviour. - Removed
AnimancerPlayable.OnGraphStartandOnGraphStop. - Removed
HashedAnimancerControllersince it was unlikely to actually be used.
Fixes
- Fixed
ClipStateInspector time bar and slider to clamp when the animation is not looping. - [Pro-Only]
AnimancerLayer.Stopnow sets theWeightto 0 for when a layer fade finishes.