mirror of
https://github.com/ppy/osu.git
synced 2025-01-28 16:52:55 +08:00
Explose + use the full calculated length of the path
This commit is contained in:
parent
3358ab9f8a
commit
b4e1b5fa98
@ -133,8 +133,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders
|
|||||||
|
|
||||||
private void updateSlider()
|
private void updateSlider()
|
||||||
{
|
{
|
||||||
HitObject.Path.ExpectedDistance.Value = null;
|
HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.CalculatedDistance) ?? (float)HitObject.Path.CalculatedDistance;
|
||||||
HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.Distance) ?? (float)HitObject.Path.Distance;
|
|
||||||
|
|
||||||
bodyPiece.UpdateFrom(HitObject);
|
bodyPiece.UpdateFrom(HitObject);
|
||||||
headCirclePiece.UpdateFrom(HitObject.HeadCircle);
|
headCirclePiece.UpdateFrom(HitObject.HeadCircle);
|
||||||
|
@ -114,8 +114,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders
|
|||||||
|
|
||||||
private void onNewControlPoints(Vector2[] controlPoints)
|
private void onNewControlPoints(Vector2[] controlPoints)
|
||||||
{
|
{
|
||||||
HitObject.Path.ExpectedDistance.Value = null;
|
HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.CalculatedDistance) ?? (float)HitObject.Path.CalculatedDistance;
|
||||||
HitObject.Path.ExpectedDistance.Value = composer?.GetSnappedDistanceFromDistance(HitObject.StartTime, (float)HitObject.Path.Distance) ?? (float)HitObject.Path.Distance;
|
|
||||||
|
|
||||||
UpdateHitObject();
|
UpdateHitObject();
|
||||||
}
|
}
|
||||||
|
@ -103,6 +103,18 @@ namespace osu.Game.Rulesets.Objects
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The distance of the path prior to lengthening/shortening to account for <see cref="ExpectedDistance"/>.
|
||||||
|
/// </summary>
|
||||||
|
public double CalculatedDistance
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
ensureValid();
|
||||||
|
return calculatedLength;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Computes the slider path until a given progress that ranges from 0 (beginning of the slider)
|
/// Computes the slider path until a given progress that ranges from 0 (beginning of the slider)
|
||||||
/// to 1 (end of the slider) and stores the generated path in the given list.
|
/// to 1 (end of the slider) and stores the generated path in the given list.
|
||||||
@ -251,7 +263,7 @@ namespace osu.Game.Rulesets.Objects
|
|||||||
if (calculatedLength > expectedDistance)
|
if (calculatedLength > expectedDistance)
|
||||||
{
|
{
|
||||||
// The path will be shortened further, in which case we should trim any more unnecessary lengths and their associated path segments
|
// The path will be shortened further, in which case we should trim any more unnecessary lengths and their associated path segments
|
||||||
while (cumulativeLength.Count > 0 && cumulativeLength[cumulativeLength.Count - 1] > expectedDistance)
|
while (cumulativeLength.Count > 0 && cumulativeLength[cumulativeLength.Count - 1] >= expectedDistance)
|
||||||
{
|
{
|
||||||
cumulativeLength.RemoveAt(cumulativeLength.Count - 1);
|
cumulativeLength.RemoveAt(cumulativeLength.Count - 1);
|
||||||
calculatedPath.RemoveAt(pathEndIndex--);
|
calculatedPath.RemoveAt(pathEndIndex--);
|
||||||
|
Loading…
Reference in New Issue
Block a user