1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-01 16:32:57 +08:00
Commit Graph

12 Commits

Author SHA1 Message Date
Bartłomiej Dach
7c70dc4dc3
Only update combo information when any changes happened 2025-01-08 10:28:06 +01:00
Bartłomiej Dach
c93b87583a
Force new combo on objects succeeding a break
No issue thread for this again. Reported internally on discord:
https://discord.com/channels/90072389919997952/1259818301517725707/1320420768814727229

Placing this logic in the beatmap processor, as a post-processing step,
means that the new combo force won't be visible until a placement has
been committed. That can be seen as subpar, but I tried putting this
logic in the placement and it sucked anyway:

- While the combo number was correct, the colour looked off, because it
  would use the same combo colour as the already-placed objects after
  said break, which would only cycle to the next, correct one on
  placement

- Not all scenarios can be handled in the placement. Refer to one of the
  test cases added in the preceding commit, wherein two objects are
  placed far apart from each other, and an automated break is inserted
  between them - the placement has no practical way of knowing whether
  it's going to have a break inserted automatically before it or not.
2025-01-07 14:06:23 +01:00
Bartłomiej Dach
c3062f96ee
Fix autogenerated breaks not invalidating on change to pre-empt time 2024-07-23 13:38:50 +02:00
Bartłomiej Dach
088e8ad0a2
Respect pre-empt time when auto-generating breaks
Closes https://github.com/ppy/osu/issues/28703.
2024-07-23 13:30:13 +02:00
Bartłomiej Dach
343090e3b1
Do not regenerate breaks unless meaningful change to object start/end times is detected
Tangentially found when profiling https://github.com/ppy/osu/pull/28792.

For reproduction, import https://osu.ppy.sh/beatmapsets/972#osu/9007,
move any object on the playfield, and observe a half-second freeze
when ending the drag.
2024-07-10 11:42:25 +02:00
Dean Herbert
005af280f2
Isolate bindable breaks list to EditorBeatmap 2024-07-02 11:31:55 +09:00
Bartłomiej Dach
b1baa49459
Add note about implicit reliance on sort by start time 2024-06-27 07:56:57 +02:00
Bartłomiej Dach
ef952bcd65
Use GetLastObjectTime() for safety
Due to other circumstances this has no real effect, but may as well.
2024-06-27 07:48:06 +02:00
Dean Herbert
7ef7e5f163
Fix break generation not accounting for concurrent hitobjects correctly 2024-06-27 12:10:26 +09:00
Bartłomiej Dach
fae6dcfffa
Remove manual breaks at the start/end of beatmap
This is the secondary cause of https://github.com/ppy/osu/issues/28577,
because you could do the following:

- Have a break autogenerate itself
- Adjust either end of it to make it mark itself as manually-adjusted
- Remove all objects before or after said break

to end up in a state wherein there are no objects before or after a
break.

The direct fix is still correct because it is still technically possible
to end up in a state wherein a break is before or after all objects
(obvious one is manual `.osu` editing), but this behaviour is also
undesirable for the autogeneration logic.
2024-06-25 12:49:17 +02:00
Bartłomiej Dach
7311a7ffd7
Purge manual breaks if they intersect with an actual hitobject 2024-06-19 10:51:37 +02:00
Bartłomiej Dach
4022a8b06c
Implement automatic break period generation 2024-06-19 10:22:06 +02:00