2017 05 01
published 01 May 2017
I guess may is already upon us. How time flies!
Transform sequences
I didn’t get to mention this last week, but I spent some time thinking about how to tidy up places where we use many transforms in a row. Until recently, it was very easily to add delays when making things move and not cleaning up after yourself, creating unintended side-effects somewhere further down the draw tree. Take this example:
We now use the using()
pattern to automatically roll back any applied delays, avoiding potential user errors. Some of our contributors have already replaced most existing instances of Delay
and DelayReset
with this new pattern; once everything is switched over we can remove these two methods completely.
In addition to the delay sequence, there is also the concept of an absolute sequence. This can be used to start transforms from a known time value, which is useful for things like hit objects where you know exactly when you want things to happen, as opposed to applying transforms relative to the current time.
Playlist controller
DrabWeb made some good headway on the playlist implementation, but it was still some way from being in a usable state. I spent some time today refactoring and extending the implementation so his effort in implementing the UI would not be wasted. Getting search hooked up is just one step away (dependent on another few pull requests which need further review)!
Paragraph (and word wrap) support
Again building on DrabWeb’s initiative, I polished the Paragraph
logic so we can finally wrap words correctly. While this isn’t used anywhere in-game yet, here’s a quick look at where things stand.
Other things
- The localisation system continues to get more implementation details thanks to huoyaoyuan #678.
- A potential regression was fixed post song select performance improvements #693.
- Quite a sizeable refactor of osu! autoplay code by gracefu was merged #665. No visible changes, but the code is much more elegant.
New release available
2017.501.0 is now available from github releases (or via auto-update if you already have lazer installed)! Contains everything above.