mirror of
https://github.com/ppy/osu.git
synced 2024-09-21 20:07:25 +08:00
Change "distance spacing" multipler type to double
Avoids losing precision on initial load, causing an unnecessary hash change in `EditorChangeHandler`. Resolves test failures in `TestSceneEditorChangeStates` (https://github.com/ppy/osu/runs/5192493482?check_suite_focus=true).
This commit is contained in:
parent
7654584e40
commit
0992bec2c8
@ -99,7 +99,7 @@ namespace osu.Game.Rulesets.Mania.Tests.Editor
|
|||||||
set => InternalChild = value;
|
set => InternalChild = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override IBindable<float> DistanceSpacingMultiplier => throw new System.NotImplementedException();
|
public override IBindable<double> DistanceSpacingMultiplier => throw new System.NotImplementedException();
|
||||||
|
|
||||||
public override SnapResult SnapScreenSpacePositionToValidTime(Vector2 screenSpacePosition)
|
public override SnapResult SnapScreenSpacePositionToValidTime(Vector2 screenSpacePosition)
|
||||||
{
|
{
|
||||||
|
@ -187,7 +187,7 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor
|
|||||||
|
|
||||||
public SnapResult SnapScreenSpacePositionToValidTime(Vector2 screenSpacePosition) => new SnapResult(screenSpacePosition, 0);
|
public SnapResult SnapScreenSpacePositionToValidTime(Vector2 screenSpacePosition) => new SnapResult(screenSpacePosition, 0);
|
||||||
|
|
||||||
public IBindable<float> DistanceSpacingMultiplier { get; } = new BindableFloat(1);
|
public IBindable<double> DistanceSpacingMultiplier { get; } = new BindableDouble(1);
|
||||||
|
|
||||||
public float GetBeatSnapDistanceAt(HitObject referenceObject) => (float)beat_length;
|
public float GetBeatSnapDistanceAt(HitObject referenceObject) => (float)beat_length;
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ namespace osu.Game.Tests.Visual.Editing
|
|||||||
|
|
||||||
public SnapResult SnapScreenSpacePositionToValidTime(Vector2 screenSpacePosition) => new SnapResult(screenSpacePosition, 0);
|
public SnapResult SnapScreenSpacePositionToValidTime(Vector2 screenSpacePosition) => new SnapResult(screenSpacePosition, 0);
|
||||||
|
|
||||||
public IBindable<float> DistanceSpacingMultiplier { get; } = new BindableFloat(1);
|
public IBindable<double> DistanceSpacingMultiplier { get; } = new BindableDouble(1);
|
||||||
|
|
||||||
public float GetBeatSnapDistanceAt(HitObject referenceObject) => 10;
|
public float GetBeatSnapDistanceAt(HitObject referenceObject) => 10;
|
||||||
|
|
||||||
|
@ -66,15 +66,15 @@ namespace osu.Game.Rulesets.Edit
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected abstract bool SupportsDistanceSpacing { get; }
|
protected abstract bool SupportsDistanceSpacing { get; }
|
||||||
|
|
||||||
private readonly BindableFloat distanceSpacing = new BindableFloat
|
private readonly BindableDouble distanceSpacing = new BindableDouble
|
||||||
{
|
{
|
||||||
Default = 1.0f,
|
Default = 1.0,
|
||||||
MinValue = 0.1f,
|
MinValue = 0.1,
|
||||||
MaxValue = 6.0f,
|
MaxValue = 6.0,
|
||||||
Precision = 0.01f,
|
Precision = 0.01,
|
||||||
};
|
};
|
||||||
|
|
||||||
public override IBindable<float> DistanceSpacingMultiplier => distanceSpacing;
|
public override IBindable<double> DistanceSpacingMultiplier => distanceSpacing;
|
||||||
|
|
||||||
private SnappingToolboxContainer snappingToolboxContainer;
|
private SnappingToolboxContainer snappingToolboxContainer;
|
||||||
|
|
||||||
@ -161,11 +161,11 @@ namespace osu.Game.Rulesets.Edit
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
distanceSpacing.Value = (float)EditorBeatmap.BeatmapInfo.DistanceSpacing;
|
distanceSpacing.Value = EditorBeatmap.BeatmapInfo.DistanceSpacing;
|
||||||
|
|
||||||
if (SupportsDistanceSpacing)
|
if (SupportsDistanceSpacing)
|
||||||
{
|
{
|
||||||
ExpandableSlider<float, SizeSlider> distanceSpacingSlider;
|
ExpandableSlider<double, SizeSlider<double>> distanceSpacingSlider;
|
||||||
|
|
||||||
AddInternal(snappingToolboxContainer = new SnappingToolboxContainer
|
AddInternal(snappingToolboxContainer = new SnappingToolboxContainer
|
||||||
{
|
{
|
||||||
@ -173,7 +173,7 @@ namespace osu.Game.Rulesets.Edit
|
|||||||
Origin = Anchor.TopRight,
|
Origin = Anchor.TopRight,
|
||||||
Child = new EditorToolboxGroup("snapping")
|
Child = new EditorToolboxGroup("snapping")
|
||||||
{
|
{
|
||||||
Child = distanceSpacingSlider = new ExpandableSlider<float, SizeSlider>
|
Child = distanceSpacingSlider = new ExpandableSlider<double, SizeSlider<double>>
|
||||||
{
|
{
|
||||||
Current = { BindTarget = distanceSpacing },
|
Current = { BindTarget = distanceSpacing },
|
||||||
KeyboardStep = 0.01f,
|
KeyboardStep = 0.01f,
|
||||||
@ -563,7 +563,7 @@ namespace osu.Game.Rulesets.Edit
|
|||||||
|
|
||||||
#region IPositionSnapProvider
|
#region IPositionSnapProvider
|
||||||
|
|
||||||
public abstract IBindable<float> DistanceSpacingMultiplier { get; }
|
public abstract IBindable<double> DistanceSpacingMultiplier { get; }
|
||||||
|
|
||||||
public abstract SnapResult SnapScreenSpacePositionToValidTime(Vector2 screenSpacePosition);
|
public abstract SnapResult SnapScreenSpacePositionToValidTime(Vector2 screenSpacePosition);
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Edit
|
|||||||
/// The spacing multiplier applied to beat snap distances.
|
/// The spacing multiplier applied to beat snap distances.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="BeatmapInfo.DistanceSpacing"/>
|
/// <seealso cref="BeatmapInfo.DistanceSpacing"/>
|
||||||
IBindable<float> DistanceSpacingMultiplier { get; }
|
IBindable<double> DistanceSpacingMultiplier { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Given a position, find a valid time and position snap.
|
/// Given a position, find a valid time and position snap.
|
||||||
|
@ -53,7 +53,7 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
|||||||
[Resolved]
|
[Resolved]
|
||||||
private BindableBeatDivisor beatDivisor { get; set; }
|
private BindableBeatDivisor beatDivisor { get; set; }
|
||||||
|
|
||||||
private IBindable<float> distanceSpacingMultiplier;
|
private IBindable<double> distanceSpacingMultiplier;
|
||||||
|
|
||||||
private readonly LayoutValue gridCache = new LayoutValue(Invalidation.RequiredParentSizeToFit);
|
private readonly LayoutValue gridCache = new LayoutValue(Invalidation.RequiredParentSizeToFit);
|
||||||
private readonly double? endTime;
|
private readonly double? endTime;
|
||||||
|
@ -317,7 +317,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
|
|||||||
private double getTimeFromPosition(Vector2 localPosition) =>
|
private double getTimeFromPosition(Vector2 localPosition) =>
|
||||||
(localPosition.X / Content.DrawWidth) * track.Length;
|
(localPosition.X / Content.DrawWidth) * track.Length;
|
||||||
|
|
||||||
public IBindable<float> DistanceSpacingMultiplier => throw new NotImplementedException();
|
public IBindable<double> DistanceSpacingMultiplier => throw new NotImplementedException();
|
||||||
|
|
||||||
public float GetBeatSnapDistanceAt(HitObject referenceObject) => throw new NotImplementedException();
|
public float GetBeatSnapDistanceAt(HitObject referenceObject) => throw new NotImplementedException();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user