Commit Graph

268 Commits

Author SHA1 Message Date
Dean Herbert 602b16f533
Fix fade-in no longer working on videos 2024-04-23 22:03:32 +08:00
Dean Herbert 17ca29c2c6
Actually apply transforms to the video 2024-04-23 17:37:37 +08:00
Dean Herbert 7eeac0f3b9
Fix incorrect xmldoc
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2024-04-23 17:34:52 +08:00
Dean Herbert 9e7182acf0
Remove unused DI beatmap paramater 2024-04-22 18:45:02 +08:00
Dean Herbert c43c383abf
Allow storboard videos to take on no-relative size when specified by a mapper 2024-04-22 18:44:47 +08:00
Dean Herbert 4ae9f81c73
Apply transforms to storyboard videos
This requires that they are a `StoryboardSprite` for simplicity. Luckily
this works just fine.
2024-04-22 18:43:15 +08:00
Dan Balasescu 7b92c725b1
Revert "Merge pull request #27454 from EVAST9919/sb-lifetime-improvements"
This reverts commit 0881e7c8c1, reversing
changes made to 29a37e3585.
2024-04-05 14:45:49 +09:00
Dean Herbert 5b6703ec0d
Move optimisation to isolated method 2024-03-06 19:25:13 +08:00
Andrei Zavatski 77b3055978 Improve sb sprite end time guessing 2024-03-01 22:30:44 +03:00
Salman Ahmed 5597b48882 Fix storyboard animations stripping path directory on skin lookup 2024-01-17 18:39:48 +03:00
Salman Ahmed bac306879a Minor reword on documentation 2023-10-28 03:18:13 +03:00
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
Dean Herbert 5341a335a6
Bypass `Parent` nullability checks for now 2023-10-17 17:48:45 +09:00
Bartłomiej Dach e314913aeb
Handle null texture case 2023-09-27 11:18:38 +02:00
Dean Herbert a7237e48aa Merge branch 'master' into fix-storyboard-skin-textures-lookup 2023-09-27 17:17:51 +09:00
Dean Herbert 3705c4c8d5 Avoid potentially incorrect size adjustment when texture doesn't change 2023-09-27 17:16:45 +09:00
Dean Herbert 990c54519b
Merge branch 'master' into limit-gameplay-sprite-dimensions 2023-09-26 16:40:32 +09:00
Dean Herbert 567bc8fcd3 Ensure `DrawableStoryboardSprite`'s texture size propagates corectly on skin change 2023-09-26 14:13:51 +09:00
Dean Herbert 2ca1c684bb
Merge branch 'master' into fix-storyboard-skin-textures-lookup 2023-09-26 14:05:27 +09:00
Dean Herbert b5e64d933c Apply same fix to `DrawableStoryboardAnimation` 2023-09-20 12:54:36 +09:00
Dean Herbert 50adb5f7a7 Remove incorrectly merge conflict resolved 2023-09-20 12:54:28 +09:00
Bartłomiej Dach 641e651bf2
Fix `DrawableStoryboardVideo` attempting to unmap path once too much
The `StoryboardResourceLookupStore` cached at storyboard level is
supposed to already be handling that; no need for local logic anymore.
2023-09-19 20:18:33 +02:00
Bartłomiej Dach ba518e1da8
Fix `StoryboardResourceLookupStore` dying on failure to unmap path
Before the introduction of `StoryboardResourceLookupStore`, missing
files would softly fail by use of null fallbacks. After the
aforementioned class was added, however, the fallbacks would not work
anymore if for whatever reason `GetStoragePathFromStoryboardPath()`
failed to unmap the storyboard asset name to a storage path.
2023-09-19 20:11:16 +02:00
Dean Herbert 4a7dc4d792 Fix storyboard `UseSkinSprites` being implemented incorrectly
This was implemented as a "fallback", but it's actually intended to be
an "override". As in it allows storyboarders to *prefer* a skin sprite
before falling back to a local version contained within the storyboard.

Can be tested with https://osu.ppy.sh/beatmapsets/832364#osu/1743837.

Closes https://github.com/ppy/osu/issues/24813.
2023-09-19 20:20:20 +09:00
Dean Herbert 773ec46989 Expose some storyboard pieces to allow better testability 2023-09-19 20:20:11 +09:00
Dean Herbert 900376b662 Refactor storyboard resource lookup to be more streamlined 2023-09-14 16:15:50 +09:00
Salman Ahmed 6674c70280 Add support for limiting skin texture/animation dimensions 2023-09-03 02:21:47 +03:00
Dean Herbert 20e4e2581a Change `IBeatSyncProvider.Clock` to always be non-null 2023-07-13 22:13:40 +09:00
Dean Herbert df5b389629 Manual fixes to reduce warnings to zero 2023-06-24 01:52:53 +09:00
Dean Herbert 0ab0c52ad5 Automated pass 2023-06-24 01:00:03 +09:00
Joseph Madamba d6fa44240d
Fix storyboard video-only check being inverted 2023-05-16 21:51:32 -07:00
Dean Herbert 1efc78c0f8 Actually use new end time property when setting lifetimes 2023-04-26 13:28:51 +09:00
Dean Herbert e330052852 Add second definition of `EndTime` for storyboard elements to account for loops in lifetime 2023-04-25 15:22:11 +09:00
Dean Herbert 3919400be2 Apply NRT to some storyboard classes 2023-04-25 14:30:01 +09:00
Dean Herbert 2cce785fa5 Fix storyboard videos not fading out on completion
Closes https://github.com/ppy/osu/issues/22802.

Stable uses a 1,000 ms fade-in / out. Rather than matching that, I've
stuck with 500ms (what lazer was already using for the fade-in) because
I think it feels better.

Tested using the beatmap linked in the issue thread.
2023-03-07 15:54:35 +09:00
Dean Herbert eabd1a0cc1 Remove unused `Duration` property to avoid any misunderstandings 2023-02-06 16:42:39 +09:00
Dean Herbert 679ec986d5 Fix storyboard outro time potentially running too long 2023-02-06 16:39:44 +09:00
Dean Herbert 4a7d7c6ed9 Use `MaxBy` in all locations that can and update inspection level to match `dotnet-build` 2022-12-19 16:47:10 +09:00
Dean Herbert 192536643c Fix some more inspections 2022-12-16 20:21:19 +09:00
Dan Balasescu 7bc8908ca9 Partial everything 2022-11-27 00:00:27 +09:00
Dan Balasescu fd88c92d5a
Merge pull request #21144 from peppy/fix-storyboard-end-start-time
Fix incorrect handling of storyboard events with `end_time` before `start_time`
2022-11-10 22:53:45 +09:00
Dean Herbert 0b34340447 Fix sprites not displaying in storyboard if filename extension is missing in script 2022-11-08 14:34:28 +09:00
Dean Herbert 6085120dc5 Fix incorrect handling of storyboard events with `end_time` before `start_time` 2022-11-07 12:25:36 +09:00
Dean Herbert 28185178d6 Add support for weird storyboards which have backwards events
Closes https://github.com/ppy/osu/issues/20632.
Not adding test coverage because this is just weird.
2022-10-10 16:51:55 +09:00
Salman Ahmed 835cae3087 Remove null conditional 2022-09-23 17:06:55 +03:00
Dean Herbert 4e9053b099 Fix crash when storyboard attempts to play at main menu 2022-09-23 20:10:57 +09:00
Dean Herbert bbf906ee06 Remove unnecessary `virtual` spec 2022-09-12 14:20:48 +09:00
Dean Herbert 24138b65a7 Fix storyboard animations not starting their animation playback from the correct point in time 2022-09-12 14:05:16 +09:00
Dean Herbert 824e68dab3 Fix `VectorScale` set to 0 still showing some sprites in storyboard
This implementation was matching the [framework side implementation of
scale](16d1c2d335/osu.Framework/Graphics/Drawable.cs (L973-L976))
but I don't think it's required here.

I'm still not sure if the framework implementation is correct, but
removing it locally does seem to fix broken storyboard cases.

Closes https://github.com/ppy/osu/issues/20155.
2022-09-07 15:39:19 +09:00
Dean Herbert a3de5f808e Fix typo in `LoopStartTime` addition 2022-09-06 17:46:03 +09:00