1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-21 14:52:55 +08:00
Commit Graph

987 Commits

Author SHA1 Message Date
Bartłomiej Dach
518addf323
Merge branch 'master' into fix-catmull-bulbs 2024-04-10 11:25:02 +02:00
Dean Herbert
94cbe1838f
Replace usages of is null with == null 2024-04-03 01:50:39 +08:00
Dan Balasescu
4806ea54f1
Only optimise Catmull segments in osu ruleset 2024-04-01 17:22:50 +09:00
Dan Balasescu
600098d845
Fix bulbs on Catmull sliders 2024-03-27 04:05:04 +09:00
Salman Ahmed
bbdcb38f5d
Merge branch 'master' into convert-path-string-new 2024-03-19 02:51:24 +03:00
Salman Ahmed
a8ce6a0bba Use Slice method instead of index range operators for readability 2024-03-19 02:43:36 +03:00
Berkan Diler
a891303484 Use ArgumentOutOfRangeException throw helper methods 2024-03-05 10:20:30 +01:00
Huo Yaoyuan
a11e63b184 Make the code more clear 2024-02-29 20:02:04 +08:00
Huo Yaoyuan
f28f19ed7e
Fix method indent size
Co-authored-by: Salman Ahmed <frenzibyte@gmail.com>
2024-02-29 10:47:16 +08:00
Huo Yaoyuan
e86ebd6cdb Fix formatting 2024-02-29 00:24:24 +08:00
Huo Yaoyuan
470d2be2e1 The overhead of LINQ is not ignorable 2024-02-29 00:07:00 +08:00
Huo Yaoyuan
bcb91f348d Use ArrayPool instead of stackalloc 2024-02-28 22:51:36 +08:00
Huo Yaoyuan
fe34577ee2 Update parsing. 2024-02-28 22:42:08 +08:00
Huo Yaoyuan
4bff54d35d Add ToString on PathControlPoint for debugging 2024-02-28 22:37:14 +08:00
Huo Yaoyuan
f49aa4d815 Parse points and segments for path string 2024-02-28 22:01:39 +08:00
Andrei Zavatski
9e3defebda Remove unused using 2024-02-25 19:05:40 +03:00
Andrei Zavatski
c3fa97d062 Reduce allocations in HitObjectLifetimeEntry 2024-02-25 18:02:42 +03:00
Andrei Zavatski
1fb19e7129 Reduce allocations in DrawableSpinner 2024-02-24 20:18:30 +03:00
Dean Herbert
4d4d69521f
Merge pull request #27114 from EVAST9919/judgements-rework
Cache created judgement in `HitObject`
2024-02-18 18:07:58 +08:00
Dean Herbert
9655e8c48a
Adjust xmldoc slightly 2024-02-18 17:54:29 +08:00
Andrei Zavatski
22f5a66c02 Reduce allocations during beatmap selection 2024-02-17 15:46:38 +03:00
Andrei Zavatski
060b01eee8 Make CreateJudgement public again and add remarks 2024-02-16 20:24:02 +03:00
Andrei Zavatski
c500264306 Cache created judgement in HitObject 2024-02-09 23:20:31 +03:00
Dan Balasescu
c18cd65081
Merge pull request #26694 from chandler14362/hit-object-result-allocations
Avoid closure allocations when applying hit object results
2024-02-06 17:49:26 +09:00
Bartłomiej Dach
f65449375e
Merge branch 'master' into scrolling-alloc 2024-02-05 19:59:47 +01:00
Bartłomiej Dach
39fe078984
Merge branch 'master' into hit-object-result-allocations 2024-02-05 13:24:10 +01:00
Bartłomiej Dach
2976f225e0
Improve xmldoc of state param 2024-02-05 13:22:58 +01:00
Bartłomiej Dach
efe6bb25b1
Refactor result application around again to remove requirement for fields
Co-authored-by: Dean Herbert <pe@ppy.sh>
2024-02-05 13:21:01 +01:00
Andrei Zavatski
4aa27482a9 Use SlimReadOnlyDictionaryWrapper for AliveEntries 2024-02-03 19:54:08 +03:00
Dan Balasescu
b44f77cee1
Update R# + fix inspections 2024-02-02 21:00:28 +09:00
Dan Balasescu
0642d74014
Expose as ReadOnlyDictionary 2024-01-31 22:52:57 +09:00
Andrei Zavatski
3aefc91967 Make AliveDrawableMap public 2024-01-31 07:54:07 +03:00
Dean Herbert
de32e7815b
Clean up DrawableHitObject events on Dispose
This is just general safeties to avoid cases where
components don't correctly unbind events.
2024-01-29 15:28:20 +09:00
Dean Herbert
347e88f597
Add note about using static callback 2024-01-26 16:21:48 +09:00
Chandler Stowell
93bd3ce5ae update DrawableHitCircle.ApplyResult to pass this to its callback 2024-01-25 11:25:41 -05:00
Chandler Stowell
d2775680e6 use stack to pass action state when applying hit results
this removes closure allocations
2024-01-24 13:13:45 -05:00
Dean Herbert
1999e772f6
Fix FollowPointConnection pool filling up when follow points are hidden
Closes https://github.com/ppy/osu/issues/26642.

I think this applied to all pooling cases here.
2024-01-21 10:31:27 +09:00
Bartłomiej Dach
7c9adc7ad3
Fix incorrect score conversion on selected beatmaps due to incorrect difficultyPeppyStars rounding
Fixes issue that occurs on *about* 246 beatmaps and was first described
by me on discord:

    https://discord.com/channels/188630481301012481/188630652340404224/1154367700378865715

and then rediscovered again during work on
https://github.com/ppy/osu/pull/26405:

    https://gist.github.com/bdach/414d5289f65b0399fa8f9732245a4f7c#venenog-on-ultmate-end-by-blacky-overdose-631

It so happens that in stable, due to .NET Framework internals, float
math would be performed using x87 registers and opcodes.
.NET (Core) however uses SSE instructions on 32- and 64-bit words.
x87 registers are _80 bits_ wide. Which is notably wider than _both_
float and double. Therefore, on a significant number of beatmaps,
the rounding would not produce correct values due to insufficient
precision.

See following gist for corroboration of the above:

    https://gist.github.com/bdach/dcde58d5a3607b0408faa3aa2b67bf10

Thus, to crudely - but, seemingly accurately, after checking across
all ranked maps - emulate this, use `decimal`, which is slow, but has
bigger precision than `double`. The single known exception beatmap
in whose case this results in an incorrect result is

    https://osu.ppy.sh/beatmapsets/1156087#osu/2625853

which is considered an "acceptable casualty" of sorts.

Doing this requires some fooling of the compiler / runtime (see second
inline comment in new method). To corroborate that this is required,
you can try the following code snippet:

    Console.WriteLine(string.Join(' ', BitConverter.GetBytes(1.3f).Select(x => x.ToString("X2"))));
    Console.WriteLine(string.Join(' ', BitConverter.GetBytes(1.3).Select(x => x.ToString("X2"))));
    Console.WriteLine();

    decimal d1 = (decimal)1.3f;
    decimal d2 = (decimal)1.3;
    decimal d3 = (decimal)(double)1.3f;

    Console.WriteLine(string.Join(' ', decimal.GetBits(d1).SelectMany(BitConverter.GetBytes).Select(x => x.ToString("X2"))));
    Console.WriteLine(string.Join(' ', decimal.GetBits(d2).SelectMany(BitConverter.GetBytes).Select(x => x.ToString("X2"))));
    Console.WriteLine(string.Join(' ', decimal.GetBits(d3).SelectMany(BitConverter.GetBytes).Select(x => x.ToString("X2"))));

which will print

    66 66 A6 3F
    CD CC CC CC CC CC F4 3F

    0D 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
    0D 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00
    8C 5D 89 FB 3B 76 00 00 00 00 00 00 00 00 0E 00

Note that despite `d1` being converted from a less-precise floating-
-point value than `d2`, it still is represented 100% accurately as
a decimal number.

After applying this change, recomputation of legacy scoring attributes
for *all* rulesets will be required.
2024-01-10 19:30:18 +01:00
Dean Herbert
e9289cfbe7
Reduce precision of audio balance adjustments during slider sliding 2024-01-05 02:26:30 +09:00
OliBomby
ec578e1d9f fix near-zero length sliders n stuff being placeable 2023-12-19 21:20:21 +01:00
Dan Balasescu
10e16e4b04
Fix handling of combo offset without new combo, and incorrect lazer tests 2023-11-24 09:46:06 +09:00
Dan Balasescu
7bc2d6e6cd
Merge branch 'master' into fix-combo-handling 2023-11-23 16:22:01 +09:00
Dan Balasescu
7998204cfe
Fix combo/combo colouring issues around spinners 2023-11-23 13:54:05 +09:00
Dan Balasescu
30309cdf11
Merge pull request #25415 from Poyo-SSB-forks/unify-ur
Change unstable rate calculation to account for rate-change mods
2023-11-23 09:53:28 +09:00
Dan Balasescu
cb4568c4a1
Fix first object after break not starting a new combo 2023-11-22 17:22:48 +09:00
Dean Herbert
04640b6fb0
Improve commenting around IHasCombo interfaces
Following discusion with smoogi IRL.
2023-11-22 10:44:29 +09:00
Poyo
0cf925dadf Use better fallback
Seems better to use the rate from a non-gameplay clock than to arbitrarily apply 1.
2023-11-21 15:18:04 -08:00
Dean Herbert
4b2d8aa6a6
Add ToString on PathType for better test output 2023-11-21 15:38:12 +09:00
Dean Herbert
3d094f84ad
Fix incorrect parsing of BSpline curve types 2023-11-21 15:38:12 +09:00
Bartłomiej Dach
8e39dbbff1
Adjust casing of curve type menu items
The "Perfect curve" one in particular... fixes test failures, as some
tests were relying on this particular casing. But the new version feels
more correct anyway, so it's whatever.
2023-11-20 15:42:55 +09:00