1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-13 05:22:54 +08:00
osu-lazer/osu.Game/Storyboards
Bartłomiej Dach 9ce2c1f49c
Exclude video events from being accounted for when calculating storyboard time bounds
Closes https://github.com/ppy/osu/issues/25263.

In some circumstances, stable allows skipping twice if a particularly
long storyboarded intro is being displayed:

    https://github.com/peppy/osu-stable-reference/blob/master/osu!/GameModes/Play/Player.cs#L1728-L1736

`AllowDoubleSkip` is calculated thus:

    3ea48705eb/osu!/GameModes/Play/Player.cs#L1761-L1770

and `leadInTime` is calculated thus:

    3ea48705eb/osu!/GameModes/Play/Player.cs#L1342-L1351

The key to watch out for here is `{first,last}EventTime`. `EventManager`
will calculate it on-the-fly as it adds storyboard elements:

    3ea48705eb/osu!/GameplayElements/Events/EventManager.cs#L253-L256

However, this pathway is only used for sprite, animation, sample,
and break events. Video and background events use the following pathway:

    https://github.com/peppy/osu-stable-reference/blob/master/osu!/GameplayElements/Events/EventManager.cs#L368

Note that this particular overload does not mutate either bound.
Which means that for the purposes of determining where a storyboard
starts and ends temporally, a video event's start time is essentially
ignored.

To reflect that, add a clause that excludes video events from
calculations of `{Earliest,Latest}EventTime`.
2023-10-27 22:24:17 +02:00
..
Drawables Bypass Parent nullability checks for now 2023-10-17 17:48:45 +09:00
CommandLoop.cs Automated pass 2023-06-24 01:00:03 +09:00
CommandTimeline.cs Fix incorrect handling of storyboard events with end_time before start_time 2022-11-07 12:25:36 +09:00
CommandTimelineGroup.cs Automated pass 2023-06-24 01:00:03 +09:00
CommandTrigger.cs Automated pass 2023-06-24 01:00:03 +09:00
IStoryboardElement.cs Automated pass 2023-06-24 01:00:03 +09:00
IStoryboardElementWithDuration.cs Automated pass 2023-06-24 01:00:03 +09:00
Storyboard.cs Exclude video events from being accounted for when calculating storyboard time bounds 2023-10-27 22:24:17 +02:00
StoryboardAnimation.cs Apply NRT to some storyboard classes 2023-04-25 14:30:01 +09:00
StoryboardExtensions.cs Automated pass 2023-06-24 01:00:03 +09:00
StoryboardLayer.cs Automated pass 2023-06-24 01:00:03 +09:00
StoryboardSample.cs Automated pass 2023-06-24 01:00:03 +09:00
StoryboardSprite.cs Add second definition of EndTime for storyboard elements to account for loops in lifetime 2023-04-25 15:22:11 +09:00
StoryboardVideo.cs Expose some storyboard pieces to allow better testability 2023-09-19 20:20:11 +09:00
StoryboardVideoLayer.cs Automated pass 2023-06-24 01:00:03 +09:00