The previous animation blending system had some flows. The
AnimationHandler was owned by the model which was incorrect, since it's
possible to change models during an animation sequence. The
AnimationHandler is now owned by the item, ensuring there is only one
per character instance.
We now ignore animation change requests for one frame. This is because
the scripts often cause an animation change, and request another one the
very next frame. This used to cause issues because we were blending the
latest animation with the previous one which was only active for one
frame, causing a discontinuity. This new solution is kind of a hack.
Hopefully it is good enough and there is no need to implement animation
blending for more than two animations at once.
Previously scripts were paused for the duration of the animation. This
could lead to issues where scripts would wake up one frame too late or
too early, resulting in animation glitches.
Now, scripts are suspended until the animation is done playing. This
makes sure scripts select the new animation in the same frame as the one
they were waiting for.
Fixes incorrect frames sometimes being visible before or after video
animation. Reduces a bit the animation blending issues for skeletal
animations. More work is still needed to improve skeletal animation
blending for the remaining glitches to be fixed.
The replacement PNG files can have larger dimensions when compared to
the original XMG images, enabling the creation of a high resolution mod.
The game looks for the replacement files in the game directory and then
in the xarc subdirectory of the directory containing the archive in
which the xmg picture to be replaced is located. For instance:
'1e/00/xarc/fountain_layercenter.png' should be used for the Venice park
background.
Prevents a garbage frame from being displayed if the animation is not
updated on the same frame it is started. Happens with the hovercar
animation in April's room and when the subway enters the station.