Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix legacy mania note body animation not resetting sometimes #28339

Commits on May 28, 2024

  1. Fix legacy mania note body animation not resetting sometimes

    Hopefully closes ppy#28284.
    
    As far as I can tell this is a somewhat difficult one to reproduce
    because it relies on a specific set of circumstances (at least the
    reproduction case that I found does). The reset to frame 0 would
    previously be called explicitly when `isHitting` changed:
    
        https://github.com/ppy/osu/blob/182ca145c78432f4b832c8ea407e107dfeaaa8ad/osu.Game.Rulesets.Mania/Skinning/Legacy/LegacyBodyPiece.cs#L144
    
    However, it can be the case that `bodyAnimation` is not loaded at the
    point of this call. This is significant because
    `SkinnableTextureAnimation` contains this logic:
    
        https://github.com/ppy/osu/blob/182ca145c78432f4b832c8ea407e107dfeaaa8ad/osu.Game/Skinning/LegacySkinExtensions.cs#L192-L211
    
    which cannot be moved any earlier (because any earlier the `Clock` may
    no longer be correct), and also causes the animation to be seeked
    forward while it is stopped.
    
    I can't figure out a decent way to layer this otherwise (by scheduling
    or whatever), so this commit is just applying the nuclear option of just
    seeking back to frame 0 on every update frame in which the body piece is
    not being hit.
    bdach committed May 28, 2024
    Configuration menu
    Copy the full SHA
    bf00404 View commit details
    Browse the repository at this point in the history