mirror of
https://github.com/osukey/osukey.git
synced 2025-07-02 00:40:09 +09:00
Merge branch 'aim-refactor-slider' of https://github.com/emu1337/osu into aim-refactor-slider
This commit is contained in:
@ -15,13 +15,13 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
{
|
{
|
||||||
protected override string ResourceAssembly => "osu.Game.Rulesets.Osu";
|
protected override string ResourceAssembly => "osu.Game.Rulesets.Osu";
|
||||||
|
|
||||||
[TestCase(6.5295339534769958d, "diffcalc-test")]
|
[TestCase(6.531832890435525d, "diffcalc-test")]
|
||||||
[TestCase(1.1514260533755143d, "zero-length-sliders")]
|
[TestCase(1.4644923495008817d, "zero-length-sliders")]
|
||||||
public void Test(double expected, string name)
|
public void Test(double expected, string name)
|
||||||
=> base.Test(expected, name);
|
=> base.Test(expected, name);
|
||||||
|
|
||||||
[TestCase(9.047752485219954d, "diffcalc-test")]
|
[TestCase(8.8067616302940852d, "diffcalc-test")]
|
||||||
[TestCase(1.3985711787077566d, "zero-length-sliders")]
|
[TestCase(1.7763214959309293d, "zero-length-sliders")]
|
||||||
public void TestClockRateAdjusted(double expected, string name)
|
public void TestClockRateAdjusted(double expected, string name)
|
||||||
=> Test(expected, name, new OsuModDoubleTime());
|
=> Test(expected, name, new OsuModDoubleTime());
|
||||||
|
|
||||||
|
@ -147,7 +147,9 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Preprocessing
|
|||||||
|
|
||||||
Vector2 currMovement = Vector2.Subtract(currMovementObj.StackedPosition, currCursorPosition);
|
Vector2 currMovement = Vector2.Subtract(currMovementObj.StackedPosition, currCursorPosition);
|
||||||
double currMovementLength = scalingFactor * currMovement.Length;
|
double currMovementLength = scalingFactor * currMovement.Length;
|
||||||
double currRadius = assumed_slider_radius;
|
|
||||||
|
// Amount of movement required so that the cursor position needs to be updated.
|
||||||
|
double requiredMovement = assumed_slider_radius;
|
||||||
|
|
||||||
if (i == slider.NestedHitObjects.Count - 1)
|
if (i == slider.NestedHitObjects.Count - 1)
|
||||||
{
|
{
|
||||||
@ -163,13 +165,16 @@ namespace osu.Game.Rulesets.Osu.Difficulty.Preprocessing
|
|||||||
currMovementLength = scalingFactor * currMovement.Length;
|
currMovementLength = scalingFactor * currMovement.Length;
|
||||||
}
|
}
|
||||||
else if (currMovementObj is SliderRepeat)
|
else if (currMovementObj is SliderRepeat)
|
||||||
currRadius = normalized_radius;
|
{
|
||||||
|
// For a slider repeat, assume a tighter movement threshold to better assess repeat sliders.
|
||||||
|
requiredMovement = normalized_radius;
|
||||||
|
}
|
||||||
|
|
||||||
if (currMovementLength > currRadius)
|
if (currMovementLength > requiredMovement)
|
||||||
{
|
{
|
||||||
// this finds the positional delta from the required radius and the current position, and updates the currCursorPosition accordingly, as well as rewarding distance.
|
// this finds the positional delta from the required radius and the current position, and updates the currCursorPosition accordingly, as well as rewarding distance.
|
||||||
currCursorPosition = Vector2.Add(currCursorPosition, Vector2.Multiply(currMovement, (float)((currMovementLength - currRadius) / currMovementLength)));
|
currCursorPosition = Vector2.Add(currCursorPosition, Vector2.Multiply(currMovement, (float)((currMovementLength - requiredMovement) / currMovementLength)));
|
||||||
currMovementLength *= (currMovementLength - currRadius) / currMovementLength;
|
currMovementLength *= (currMovementLength - requiredMovement) / currMovementLength;
|
||||||
slider.LazyTravelDistance += (float)currMovementLength;
|
slider.LazyTravelDistance += (float)currMovementLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user