Although I am using the unity runtimes, this is most likely more to do with the design of all the runtimes.
It seems I am very confused with the order of events with the latest runtime, as they have now changed.
Previously End event always fired before the Start event, However, now it seems, this isn't always the case. The First frame of a non blended animation plays before the end of the original animation
Loading Image
Here are the events in the order they happened at the time they happened. red ones are our keyed events (both in Runnning_light animation)
We start in idle, then walk to run. (all of which have a 0.2 mix ) . Which I guess is why they end 0.2 seconds after the anim which interrupted them.
Then from Run2 it gets interrupted into Running_Light, which has a blend time of 0 from run. After that starts and applies frame0, the run Ends.
Why does it end after Running_Light Starts?
Additionally if I let Running_Light complete, (and idle is in the queue) the sequence is this:
Loading Image
Running_Light > Idle mix is 0
Idle start is now after the end and complete event
However, If we interrupt running_light with walk we get the following (running_light>walk mix = 0)
Loading Image
Start happens before end.
...
To me it seems strange that if you interrupt an animation rather than queue one, events would fire in a different order