added frame deltas to desync sub anims
linear not looping animation will call onAnimEnd when last keyframe reached