-
Notifications
You must be signed in to change notification settings - Fork 123
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
Hit object stacking algorithm #61
Hit object stacking algorithm #61
Conversation
This looks really good in-game -- thanks so much for tackling this! Some comments:
|
Thanks for suggestions.
|
Unfortunately i didn't manage to do calculation in one loop pass. Problems:
Fixed crazy |
Revert previous commit. Curve should be re-created or updated. No more extra updatePosition() calls.
Wait, I think I'm still missing something...
So as long as you're passing in the correct timing points (might be tricky, but certainly doable), you can get the end time without creating a Isn't this possible in one pass, then? |
Ah, I didn't realize that control points weren't necessarily the curve endpoints -- I haven't kept up with fluddokt's slider changes. Thanks a lot for pointing that out (and sorry for the confusion!). In that case, what you're doing is fine. I'll try to have this merged in the next few hours. Thanks again! |
Hit object stacking algorithm
Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
Also some additional tweaks to #61. Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
- Actually provide relevant information when an audio file can't be found. - When loading timing points, don't reset the start index every time. Signed-off-by: Jeffrey Han <itdelatrisu@gmail.com>
Move slider.sliderTime calculation from update() to constructor. Necessarily for slider.getPointAt() to work properly.
To order to get accurate slider end position, need access to both HitObject and OsuHitObject at same time.
HitObject.updatePosition() is a workaround since we can't calculate stack when hit object initializates.
Algorithm is pretty solid. Some numbers (STACK_LENIENCE, STACK_TIMEOUT, stackModifier etc) can be a little bit off.