holdPrevious
will keep A being applied during the mix to B, but not after the mix is complete.
AnimationState used to work like you want
instead of mixing properties that are not keyed in the next animation back to the setup pose, those properties would just be left at whatever values the previous animation keyed. This leads to needing to key all properties at the start of every animation as a way of starting from known state. This isn't great, as it means a lot more timelines are needed.
There is still a way to do what you want. If you use mixing, even with a mixDuration
of 0, then properties keyed in the previous animation but not keyed in the subsequent animation will be reset to the setup pose. However, you can use TrackEntry clearTrack
before setting the second animation. This removes the first animation without resetting anything to the setup pose. When further animations are played, they will only affect the properties they have keyed, so any skeleton state from the removed animation will remain.
I still suggest to use separate tracks rather then relying on the skeleton state set by previous animations. Eg, if your character is sitting, standing, walking, etc set those on a track. Actions like waving, aiming, etc that are to be played on top would be set on a higher track.