Released 2020-02-21
Features
- Replaced
ExposedCurvewithAnimatedProperty:- Instead of a
ScriptableObjectthat serializes the curve separately and evaluates it manually, it now accesses the value directly from the animation stream. - It automatically blends the value according to the weights of all current animations.
- It uses the Animation Jobs system implemented in Unity 2019.1+.
- The Uneven Ground example no longer supports older Unity versions.
- The
ExposedCurvescript can still be downloaded from the Inverse Kinematics page if you need it. See the Help page for contact options if you believe it should be added back into Animancer itself.
- Instead of a
- Added
PlayableAssetState.SetBindingsandPlayableAssetTransition.Bindingsto support Timelines with multiple tracks, including non-animation tracks.- This feature is still fairly experimental so please use the contact options on the Help page if you have any issues with it.
AnimancerPlayable.KeepChildrenConnectednow defaults to true for Generic Rigs because it has better Performance forSpriteanimations (and is similarly efficient for other Generic animations).
Improvements
- Improved Mixers:
- The
ManualMixerState.Statesarray is no longer directly exposed because setting its elements did not reparent the states as children of the mixer. - Now you have to use
ChildCount,GetChild, andSetChild. - Removed
MixerState.PortCountsince it was identical toChildCount. - Cleaned up various implementation details.
- The
- Improved Object Pooling:
ObjectPool.Countcan now be set to pre-allocate items.- Added
ObjectPool.SetMinCountto easily pre-allocate items. AnimancerStatenow exposes theEventPoolCountandSetMinEventPoolCountin addition to the existingEventPoolCapacity.
PlayableAssetState.Lengthis now cached so it no longer allocates garbage all the time (not sure why Unity'sPlayableAsset.lengthwould do so in the first place though).- Added
AnimancerNode.CreatePlayable,RecreatePlayable, andRecreatePlayableRecursiveto standardise their initialization.- The
TransitionPreviewWindownow uses them instead of totally destroying and recreating the states to ensure that the playables are correct without losing their drawer state. #23 - Added
AnimancerState.ChangeMainObjectto standardise the destruction and re-creation of playables when theAnimancerState.MainObjectis changed.
- The
- Added
ITransitionDetailed.IsValidto determine if a valid state can be created before use. - Added
Validate.CanBePlayedto ensure that a node has a valid playable and parent. - Improved the output of
AnimancerNode.AppendDetails.
Changes
- Changed
AnimancerLayer.maxStateDepthto a property with a conditionalSetMaxStateDepthmethod so it can be properly removed whenUNITY_ASSERTIONSis not defined. - Renamed
AnimancerState.NewTimetoRawTime. - Renamed
AnimancerState.EventUpdatabletoEventRunner. - Moved the
AnimancerNode.IsValidextension method fromAnimancerEditorUtilitiestoAnimancerUtilities. - Adjusted the area highlighted by the
TransitionDrawerfor the currently reviewing transition to include the foldout arrow.
Fixes
- Fixed
AnimancerEvent.Sequencepooling to work correctly. - Added
[CanEditMultipleObjects]toDummyObjectEditor. TransitionPreviewWindownow supports Scriptable Render Pipelines. #17- Fixed
AnimancerPlayable.LateUpdate.IsConnectedto properly disconnect it when set to false. - The
AnimancerState.Timesetter now delays assigning the value to the playable until the next update since weights cannot be applied during the late update (so the time and weight could be out of sync for a frame if set during an event). #25 - Fixed the 3D Game Kit example character to stand on moving platforms properly by only accessing the
CharacterController.isGroundedflag once per frame right after moving and using that value for everything. #24 - Destroyed
AnimancerNodes no longer get updated. - Fixed potential
NullReferenceExceptioninMixerState.ApplySynchroniseChildren. - Fixed errors in
TransitionPreviewWindowwhen the target transition is not valid.