Commit Graph

47 Commits

Author SHA1 Message Date
Bartłomiej Dach 05bd912a21
Revert `internal` access modifier application
Unfortunately breaks a few classes (which is fixable), and also breaks
Moq/Castle dynamic proxies (which is unfortunate).

Relevant error:

    System.TypeLoadException : Method 'GetPanelBackground' in type 'Castle.Proxies.IWorkingBeatmapProxy' from assembly 'DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.
    Stack Trace:
        at System.Reflection.Emit.TypeBuilder.CreateTypeNoLock()
        at System.Reflection.Emit.TypeBuilder.CreateTypeInfo()
        at Castle.DynamicProxy.Generators.Emitters.AbstractTypeEmitter.BuildType()
        at Castle.DynamicProxy.Generators.BaseInterfaceProxyGenerator.GenerateType(String typeName, INamingScope namingScope)
        at Castle.DynamicProxy.Generators.BaseProxyGenerator.<>c__DisplayClass13_0.<GetProxyType>b__0(CacheKey cacheKey)
        at Castle.Core.Internal.SynchronizedDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
        at Castle.DynamicProxy.Generators.BaseProxyGenerator.GetProxyType()
        at Castle.DynamicProxy.DefaultProxyBuilder.CreateInterfaceProxyTypeWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options)
        at Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options)
        at Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyWithoutTarget(Type interfaceToProxy, Type[] additionalInterfacesToProxy, ProxyGenerationOptions options, IInterceptor[] interceptors)
        at Moq.CastleProxyFactory.CreateProxy(Type mockType, IInterceptor interceptor, Type[] interfaces, Object[] arguments) in C:\projects\moq4\src\Moq\Interception\CastleProxyFactory.cs:line 50

In theory it would be possible to fix this via application of

    [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]

onto the `osu.Game` assembly, but I think this would be bad precedent.
2023-06-08 15:23:09 +02:00
Dean Herbert ff4d376c84 Mark relevant components as `internal` 2023-06-08 21:01:05 +09:00
Dean Herbert 3978d4babb Crop and disable mipmaps on beatmap panel backgrounds
This is an effort to improve general performance at song select. At
least on the metal renderer, I can notice very high draw frame overheads
related to texture uploads.

By reducing the size of the texture uploads to roughly match what is
actually being displayed on screen (using a relatively inexpensive crop
operation), we can bastly reduce stuttering both during initial load and
carousel scroll.

You might ask if it's safe to disable mipmapping, but I've tested with
lower resolutions and bilinear filtering seems to handle just fine.
Bilinear without mipmaps only falls apart when you scale below 50% and
we're not going too far past that at minimum game scale, if at all.
2023-06-08 16:51:07 +09:00
Dean Herbert a842f79ad4 Refactor `IWorkingBeatmap.Background` to `GetBackground()` 2023-06-08 16:19:32 +09:00
Dean Herbert 721bfb5369 Rename parameter to read better 2022-10-12 14:46:35 +09:00
NotGumballer91 e3b405cc23
Update IWorkingBeatmap.cs 2022-10-10 21:02:23 +08:00
Dean Herbert 37799e3b31 Allow preparing preview point without looping 2022-08-17 13:20:24 +09:00
Dean Herbert 452d82f292 Add more comprehensive xmldoc for beatmap model classes 2022-07-28 15:41:28 +09:00
Dan Balasescu f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
Dean Herbert f179ff33c9 Remove all NRT changes
This reverts commit bb9877adab.
2021-12-22 21:02:06 +09:00
Dean Herbert bb9877adab Reapply `IWorkingBeatmap` nullability fixed 2021-12-22 20:48:48 +09:00
Dean Herbert bc47801cbb Revert "Apply NRT to `WorkingBeatmap`"
This reverts commit 9e17d7d4e3.
2021-12-22 19:14:18 +09:00
Dean Herbert 9e17d7d4e3 Apply NRT to `WorkingBeatmap` 2021-12-22 18:41:45 +09:00
Dean Herbert f3f491374b Remove unused load checks 2021-12-22 18:17:00 +09:00
Dean Herbert e38e4c0adc Enable NRT on `IWorkingBeatmap` 2021-12-22 18:17:00 +09:00
Dean Herbert 967419c9ac Remove `BeatmapSetInfo` and `Metadata` from interface
There were very few accesses to this, and after realm they should all be
done via the `BeatmapInfo`, so let's remove this.
2021-12-22 18:17:00 +09:00
Bartłomiej Dach bb8e8bc4f0
Use consistent type for mod collection in all overloads 2021-11-21 11:30:45 +01:00
Bartłomiej Dach 6100bf66a6
Clean up cancellation handling in `WorkingBeatmap`
After the recent changes introducing cancellation support to
`WorkingBeatmap`, it turned out that if the cancellation support was
used, `GetPlayableBeatmap()` would raise timeout exceptions rather than
the expected `OperationCanceledException`.

To that end, split off a separate overload for the typical usage, that
catches `OperationCanceledException` and converts them to beatmap load
timeout exceptions, and use normal `OperationCanceledException`s in the
overload that requires a cancellation token to work.
2021-11-20 17:23:55 +01:00
Dean Herbert 0715d40ea0 Merge branch 'master' into beatmap-cancellation-token 2021-11-17 11:16:10 +09:00
Dean Herbert 13f3e2eea9 Add back default timeout to `GetPlayableBeatmap` 2021-11-17 11:06:31 +09:00
Dean Herbert f5c52755c9 Merge branch 'master' into i-working-beatmap/difficulty-calculator 2021-11-16 16:19:22 +09:00
Dean Herbert 6cca657a2d Standardise naming of `CancellationToken` parameters 2021-11-16 14:45:51 +09:00
Dean Herbert 53c0682a08 Merge branch 'master' into beatmap-cancellation-token 2021-11-16 14:43:13 +09:00
Dean Herbert a90cfb4a2f Implement remaining properties via implicit implementation rather than interface methods 2021-11-15 19:30:46 +09:00
Dean Herbert 369b4ba789 Update `DifficultyCalculator` to take an `IRulesetInfo` 2021-11-15 19:16:48 +09:00
Dean Herbert a0e25d18cd Expose more of `WorkingBeatmap` via interface 2021-11-15 18:25:48 +09:00
Dean Herbert 97345ac9e6 Remove unnecessary `TimeSpan timeout` parameter (`CancellationToken` can now be used) 2021-11-08 14:33:32 +09:00
Tollii d5f5d74a89 Rename CancellationToken variable 2021-11-07 13:41:54 +01:00
Tollii cf0b757b16 Fix PR comments.
Nitpick, more cancellation token checks.
2021-11-06 16:03:53 +01:00
Tollii f0caa10066 Add support for a provided cancellation token for GetPlayableBeatmap() 2021-11-05 23:53:48 +01:00
Naxess 1478bcfa8e Improve xmldoc consistency 2021-04-20 02:30:27 +02:00
Naxess 67e4fe4284 Add xmldoc to `GetStream` 2021-04-20 02:28:38 +02:00
Naxess f168247254 Add `Track` as a property to `IWorkingBeatmap`
This is implemented by `WorkingBeatmap` already, and is much better to use than loading the track every time we need it.
2021-04-20 01:35:41 +02:00
Naxess bf8789528a Add `GetStream` to `IWorkingBeatmap` 2021-04-18 01:13:57 +02:00
Dean Herbert b72f06fef6 Centralise and clarify LoadTrack documentation 2020-08-22 19:42:34 +09:00
Dean Herbert d9debef156 Add explicit LoadTrack method 2020-08-17 15:38:16 +09:00
smoogipoo e87f50f74f Rename method 2020-08-07 22:31:41 +09:00
smoogipoo 6e42b8219c Move track to MusicController, compiles 2020-08-06 16:24:14 +09:00
Dean Herbert 729e006c3a
Merge branch 'master' into video-offset 2020-03-21 20:03:46 +09:00
Dan Balasescu f390c1995d
Apply comment suggestions
Co-Authored-By: Dean Herbert <pe@ppy.sh>
Co-Authored-By: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2020-03-16 11:29:28 +09:00
smoogipoo f7c036726a Add beatmap loading timeout 2020-03-13 13:52:40 +09:00
voidedWarranties 76c832518f Render video as a part of the storyboard 2020-03-07 21:32:03 -08:00
smoogipoo 5861eca80d Make DrawableRuleset take a converted beatmap 2019-12-12 15:58:11 +09:00
Andrei Zavatski 94512fea8e Apply naming suggestions 2019-08-31 16:20:33 +03:00
Andrei Zavatski 6e5cb8a318 implement video parsing 2019-08-30 23:19:34 +03:00
Dean Herbert 84e4748268 Remove duplicate getAnimation function and improve namespacing 2019-08-30 12:59:58 +09:00
smoogipoo 6ab2b20c70 Add an interface for working beatmaps 2019-08-29 19:38:44 +09:00