Dean Herbert
bdd2808fb5
Bump difficulty calculator versions in preparation for release
2025-03-06 16:05:51 +09:00
Dean Herbert
3fe92fb83c
Merge pull request #32158 from bdach/scaling-crash
...
Fix possible crash when scaling objects in editor
2025-03-04 13:40:41 +09:00
Bartłomiej Dach
35b0ff80bb
Mark MathHelper.Clamp()
as banned API
...
See previous commit for partial rationale.
There's an argument to be made about the `NaN`-spreading semantics being
desirable because at least something will loudly fail in that case, but
I'm not so sure about that these days. It feels like either way if
`NaN`s are produced, then things are outside of any control, and chances
are the game can probably continue without crashing. And, this move
reduces our dependence on osuTK, which has already been living on
borrowed time for years now and is only awaiting someone brave to go
excise it.
2025-02-28 13:48:22 +01:00
Bartłomiej Dach
ffef6ae185
Fix possible crash when scaling objects in editor
...
The specific fail case here is when `s.{X,Y}` is 0, and
`s{Lower,Upper}Bound` is `Infinity`. Because IEEE math is IEEE math,
`0 * Infinity` is `NaN`.
`MathHelper.Clamp()` is written the following way:
af742f1afd/src/osuTK/Math/MathHelper.cs (L284-L306)
`Math.{Min,Max}` are both documented as reporting `NaN` when any of
their operands are `NaN`:
https://learn.microsoft.com/en-us/dotnet/api/system.math.min?view=net-8.0#system-math-min(system-single-system-single)
https://learn.microsoft.com/en-us/dotnet/api/system.math.max?view=net-8.0#system-math-max(system-single-system-single)
which means that if a `NaN` happens to sneak into the bounds, it will
start spreading outwards in an uncontrolled manner, and likely crash
things.
In contrast, the standard library provided `Math.Clamp()` is written
like so:
577c36cee5/src/libraries/System.Private.CoreLib/src/System/Math.cs (L711-L729)
With this implementation, if either bound is `NaN`, it will essentially
not be checked (because any and all comparisons involving `NaN` return
false). This prevents the spread of `NaN`s, all the way to positions
of hitobjects, and thus fixes the crash.
2025-02-28 13:34:00 +01:00
Bartłomiej Dach
5b318edbfb
Fix sliders not being selectable if the body is hidden but the head is still visible
...
Closes https://github.com/ppy/osu/issues/31998 .
Previously: 1648f2efa3
,
https://github.com/ppy/osu/pull/31923 .
Oh input handling, how I love ya.
2025-02-27 15:00:29 +01:00
Dean Herbert
87b6dddd11
Merge branch 'master' into pp-dev
2025-02-27 00:08:43 +09:00
Dean Herbert
b3965f0dd0
Merge pull request #32077 from bdach/double-click-difficulty-slider-nub
...
Fix double-clicking difficulty adjust sliders not resetting the value to default correctly
2025-02-25 21:08:46 +09:00
Bartłomiej Dach
1f562ab47d
Fix double-clicking difficulty adjust sliders not resetting the value to default correctly
...
- Closes https://github.com/ppy/osu/issues/31888
- Supersedes / closes https://github.com/ppy/osu/pull/32060
2025-02-25 07:40:55 +01:00
Bartłomiej Dach
de78518fea
Fix "use current distance snap" button incorrectly factoring in last object with velocity
...
Closes https://github.com/ppy/osu/issues/32003 .
2025-02-21 12:52:59 +01:00
Dan Balasescu
cef1d02f3d
Merge pull request #31923 from peppy/fix-editor-slider-selection
...
Fix selected sliders sometimes not being clickable in editor
2025-02-18 14:31:44 +09:00
Dean Herbert
f5bdbb91d6
Merge pull request #31232 from Plextora/sudden-death-feat
...
Add "Fail when missing on a slider end" option in Sudden Death mod
2025-02-18 14:25:46 +09:00
Dean Herbert
77e40140e5
Fix selected sliders sometimes not being clickable in editor
...
Closes https://github.com/ppy/osu/issues/31918 .
Regressed with
1648f2efa3
for obvious reasons.
2025-02-18 13:41:30 +09:00
Dean Herbert
20dbe096e0
Refactor slightly
2025-02-18 13:04:38 +09:00
Bartłomiej Dach
f37a56c307
Fix nudge operations incurring FP error from coordinate space conversions
...
Closes https://github.com/ppy/osu/issues/31915 .
Reproduction of aforementioned issue requires 1280x720 resolution, which
should also be a good way to confirm that this does anything.
To me this is also equal-parts-bugfix, equal-parts-code-quality PR,
because tell me: what on earth was this code ever doing at
`ComposeBlueprintContainer` level? Nudging by one playfield-space-unit
doesn't even *make sense* in something like taiko or mania.
2025-02-17 15:21:07 +01:00
Dean Herbert
ab88ccb081
Merge branch 'master' into pp-dev
2025-02-17 11:59:14 +09:00
Plextora
cb012123ab
Merge branch 'master' into sudden-death-feat
2025-02-16 19:43:55 -05:00
Bartłomiej Dach
4e66536ae8
Fix failed scores with no hits on beatmaps with ridiculous mod combinations showing hundreds of pp points awarded ( #31741 )
...
See
https://discord.com/channels/188630481301012481/1097318920991559880/1334716356582572074 .
On `master` this is actually worse and shows thousands of pp points, so
I guess `pp-dev` is a comparable improvement, but still flagrantly
wrong. The reason why `pp-dev` is better is the `speedDeviation == null`
guard at the start of `computeSpeedValue()` which turns off the rest of
the calculation, therefore not exposing the bug where
`relevantTotalDiff` can go negative. I still guarded it in this commit
just for safety's sake given it is clear it can do very wrong stuff.
2025-02-14 14:52:05 +00:00
Dean Herbert
84b5ea3dbf
Fix weird follow circle display when rewinding through sliders in editor
...
Closes https://github.com/ppy/osu/issues/31812 .
2025-02-12 16:33:23 +09:00
Dean Herbert
f97708e6b3
Avoid binding directly to DHO's bindable
2025-02-12 16:28:14 +09:00
Dean Herbert
ffd8bd7bf4
Rename ParentObject
to DrawableObject
...
It's not a parent. The follow circle is directly part of the slider
itself.
2025-02-12 16:14:12 +09:00
Dean Herbert
afdcf40d7e
Merge branch 'master' into pp-dev
2025-02-10 18:07:07 +09:00
James Wilson
9f90ebb2f7
Calculate hit windows in performance calculator instead of databased difficulty attributes ( #31735 )
...
* Calculate hit windows in performance calculator instead of databased difficulty attributes
* Apply mods to beatmap difficulty in osu! performance calculator
* Remove `GreatHitWindow` difficulty attribute for osu!mania
* Remove use of approach rate and overall difficulty attributes for osu!
* Remove use of hit window difficulty attributes in osu!taiko
* Remove use of approach rate attribute in osu!catch
* Remove unused attribute IDs
* Code quality
* Fix `computeDeviationUpperBound` being called before `greatHitWindow` is set
2025-02-07 19:21:12 +09:00
Dean Herbert
fab5cfd275
Fix slider ball rotation not being updated when rewinding to a slider
2025-02-07 18:57:26 +09:00
Dean Herbert
6c069b3373
Merge branch 'master' into pp-dev
2025-02-07 14:09:25 +09:00
Bartłomiej Dach
2d6f64e891
Fix code quality
2025-02-03 15:18:03 +01:00
Bartłomiej Dach
a1185df2eb
Refactor IDistanceSnapProvider
to accept slider velocity objects as a reference
...
Method signatures are also changed to be a lot more explicit as to what
inputs they expect.
2025-02-03 14:00:57 +01:00
Bartłomiej Dach
8718483c70
Avoid moving already placed objects temporally when "limit distance snap to current time" is active
2025-01-31 09:51:13 +01:00
James Wilson
2ee480c442
Clamp estimateImproperlyFollowedDifficultSliders
between 0 and attributes.AimDifficultSliderCount
( #31736 )
2025-01-30 13:58:38 +00:00
Bartłomiej Dach
261a7e537b
Fix distance snap time part ceasing to work when grid snap is also active
...
As pointed out in
https://github.com/ppy/osu/pull/31655#discussion_r1935536934 .
2025-01-30 14:42:44 +01:00
Bartłomiej Dach
bad2959d5b
Change mirror mod direction setting tooltip to hopefully be less confusing
...
See https://github.com/ppy/osu/issues/29720 ,
https://discord.com/channels/188630481301012481/188630652340404224/1334294048541904906 .
This removes the tooltip due to being zero or negative information, and
also changes the description of the setting to not contain the word
"mirror", which will hopefully quash the "this is where I would place a
mirror to my screen to achieve what I want" interpretation which seems
to be a minority interpretation.
The first time this was complained about I figured this was probably a
one guy issue, but now it's happened twice, and I never want to see this
conversation again.
2025-01-30 08:59:33 +01:00
Rian (Reza Mouna Hendrian)
46144960e5
Remove unnecessary strain sorting in difficult slider count ( #31724 )
2025-01-29 19:06:05 +00:00
Bartłomiej Dach
daec91f61d
Refactor further to avoid weird non-virtual common method
2025-01-24 13:14:31 +01:00
Bartłomiej Dach
b04144df54
Fix behavioural change in interaction between grid & distance snap
2025-01-24 13:14:26 +01:00
Bartłomiej Dach
589035c534
Simplify code
2025-01-24 13:14:06 +01:00
Bartłomiej Dach
269ade178e
Fix tests
2025-01-24 11:59:07 +01:00
Bartłomiej Dach
a6987f5c95
Remove dependence of placement blueprints on IPositionSnapProvider
2025-01-24 11:59:07 +01:00
Bartłomiej Dach
15b6e28ebe
Remove dependence of blueprint containers on IPositionSnapProvider
2025-01-24 11:59:05 +01:00
Dan Balasescu
8f8246278a
Merge pull request #31527 from bdach/spectator-list-ready
...
Show spectating users during gameplay
2025-01-21 18:54:11 +09:00
Dean Herbert
aeca37c230
Merge branch 'master' into pp-dev
2025-01-21 13:19:01 +09:00
Dean Herbert
cf032e5e7f
Merge pull request #31547 from bdach/editor/precise-move
...
Add precise movement tool to osu! editor
2025-01-20 19:29:22 +09:00
StanR
22e839d62b
Replace indexed skill access with skills.OfType<...>().Single()
( #30034 )
...
* Replace indexed skill access with `skills.First(s is ...)`
* Fix comment
* Further refactoring to remove casts
---------
Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2025-01-20 09:39:35 +00:00
Dean Herbert
dcdb8d13a9
Always select text when an editor slider-textbox is focused
2025-01-20 16:17:39 +09:00
Berkan Diler
b6ce72b6d9
Remove redundant ToArray() calls in Osu/ManiaHitObjectComposer
2025-01-19 23:27:44 +01:00
James Wilson
e320f17faf
Remove redundant angle check ( #31566 )
2025-01-19 18:47:39 +03:00
Natelytle
5b4ba9225d
Move error function from osu.Game.Utils to osu.Game.Rulesets.Difficulty.Utils ( #31520 )
...
* Move error function implementation to osu.Game.Rulesets.Difficulty.Utils
* Rename ErrorFunction.cs to DifficultyCalculationUtils_ErrorFunction.cs
2025-01-17 19:37:34 +00:00
Bartłomiej Dach
ebca2e4b4f
Implement precise movement tool
...
As mentioned in one of the points in
https://github.com/ppy/osu/discussions/31263 .
2025-01-17 14:28:57 +01:00
Bartłomiej Dach
3c4bfc0a01
Merge spectator list classes into one skinnable
2025-01-17 11:23:14 +01:00
Bartłomiej Dach
0c54853710
Merge branch 'spectator-list-visuals' into spectator-list-ready
2025-01-16 15:13:04 +01:00
molneya
974fa76987
fix spinners not increasing cumulative strain time ( #31525 )
...
Co-authored-by: StanR <hi@stanr.info>
2025-01-16 09:08:47 +00:00
Dan Balasescu
471180d947
Merge pull request #31519 from EVAST9919/trail-rotate
...
Add support for `CursorTrailRotate` skin command
2025-01-16 14:56:53 +09:00