Released 2020-03-27
Features
- Mixer Transitions now have a
Speedfield for the whole mixer as well as the individual animations. - Mixers now show dropdown menus as the headdings of each column instead of using context menus so that the available functions are much more obvious.
Improvements
- Added
AnimancerPlayable.StateDictionary.ReferenceKeysOnlyso that the dictionary comparer can be set to useReferenceEqualsfor better efficiency if you aren't using value types. - The Inspector now locks event times for looping animations into the 0-1 normalized time range since values outside that range are not supported.
- Added
LinearMixerState.SortByThresholds. LinearMixerTransitionnow displays an error in the Inspector if the thresholds are out of order and you can click it to sort them.EventSequenceDrawernow overridesCanCacheInspectorGUIto returnfalseso that it can draw theTimeRulerproperly when no custom editor is present.- Removed
DummyObjectEditorsince it is now unnecessary.
- Removed
MixerState.AppendDetailsnow includes the child synchronization flags.MixerState<TParameter>.AppendDetailsnow includes the thresholds.- Improved various assertions:
AnimancerNode.Weightdoes not allow Negative, Infinity, or NaN.AnimancerNode.SpeedandAnimancerState.Timedo not allow Infinity, or NaN.- Added similar assertions to
MixerState.ApplySynchroniseChildren. - Added various assertions to verify the correct initialization of the Playables.
Fixes
- Fixed Animation Events to work properly on Generic Rigs.
- Changed the default
AnimancerNode.Indextoint.MinValuebecausePlayableGraph.Connectwith an index of-1causes it to allocate and connect to a new port instead of throwing an exception. #33 - Fixed
MixerState.Speedto work properly when using synchronization. #34 LinearMixerStatenow defers its call toAssertThresholdsSortedso that you can actually set thresholds individually without immediately triggering the assertion.- Reordering a Mixer Transition in the Inspector will now properly reorder their sync flags as well.
- Fixed
MixerState.ApplySynchroniseChildrento properly handle child states with 0 length (generally nested mixers that have all their children at 0 weight).