-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
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 hit animation not synchronizing when editing hit objects #24508
Conversation
Probably relevant issue thread: #22698 I've already proposed hooking into |
I saw your proposed solution. Mine is a bit different in that it doesn't reset all the results all the time. I think using |
@bdach what's your state on this one? Curious if you've already reviewed and are mostly on board with it, or if you're first waiting for my response? if the latter, we can probably back-burner it until after scoring, but if you've already put thought into this, from a quick check I would probably be okay with the direction (probably with a touch more inline commenting). My main concern is the binding to every |
I was waiting to see if you're willing to even entertain this diff, since it's not very far removed from the earlier proposal of mine that you said was too ugly to live. |
I prefer your version if it works since both are sub-optimal solutions, and at least yours is more isolated. Shall we go with that? |
Bdach's solution doesnt work because it doesn't address the issue of monotone time in the 'judgedEntries'. My fix for that is the source of all the not-so-isolated changes. The part of my diff that does the same thing as bdach's fix is in 'DrawableHitObject'. |
It's not clear from the description of this PR what that breaks, exactly. And I'm not sure fixing that warrants invasive changes, there's probably a way to make them not so. Likely by usage of |
If that's the case I'm not sure we'll get to this before the scoring work. If you can do anything to better isolate this as a temporary workaround it may be possible to get it in. See if you can come up with anything (even putting in a |
I'll split off the fix for monotone time invariant to a separate PR since that seems to spark some discussion. The remaining fix should be small in size, so hope that can get in in time. |
@@ -333,6 +329,8 @@ protected sealed override void OnFree(HitObjectLifetimeEntry entry) | |||
Entry.NestedEntries.RemoveAll(nestedEntry => nestedEntry is SyntheticHitObjectEntry); | |||
ClearNestedHitObjects(); | |||
|
|||
// Changes in state trigger defaults applied trigger state updates. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This sounds circular. What are the "changes in state" at the start there? Hitobject property changes? Not literal changes to DrawableHitObject.State
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The "changes in state" refers to state of the HitObject
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated comment to be clearer in 5be5335.
This should keep the
JudgementResult.RawTime
synchronized with the end time because theDefaultsApplied
event should always fire whenever a hitobject is changed in the editor.It seems that theStartTime
based method of synchronizing the state was also not able to preserve the invariant of monotone time in thejudgedEntries
, so something needed to be done to re-sort these entries. To do this I need to notifyPlayfield
of any hit object updates, soHitObjectContainer
gets a new event to propagate these events.This PR does not address the issue of the monotone time invariant in the
judgedEntries
being violated. This issue will be fixed in another PR.osu.Game.Rulesets.Osu.Tests_D4PXYerjWU.mp4
closes #22698