mirror of
https://github.com/ppy/osu
synced 2025-02-21 13:07:18 +00:00
Ensure samples & sample points are carried over during conversion
This commit is contained in:
parent
d9494d405e
commit
0cd3f98598
osu.Game.Rulesets.Osu.Tests/Editor
osu.Game.Rulesets.Osu/Edit/Blueprints/Sliders
@ -66,7 +66,7 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestConversionPreservesNewCombo()
|
public void TestConversionPreservesSliderProperties()
|
||||||
{
|
{
|
||||||
Slider slider = null;
|
Slider slider = null;
|
||||||
|
|
||||||
@ -117,7 +117,9 @@ namespace osu.Game.Rulesets.Osu.Tests.Editor
|
|||||||
bool matches(HitCircle circle, double time, Vector2 position, bool startsNewCombo) =>
|
bool matches(HitCircle circle, double time, Vector2 position, bool startsNewCombo) =>
|
||||||
Precision.AlmostEquals(circle.StartTime, time, 1)
|
Precision.AlmostEquals(circle.StartTime, time, 1)
|
||||||
&& Precision.AlmostEquals(circle.Position, position, 0.01f)
|
&& Precision.AlmostEquals(circle.Position, position, 0.01f)
|
||||||
&& circle.NewCombo == startsNewCombo;
|
&& circle.NewCombo == startsNewCombo
|
||||||
|
&& circle.Samples.SequenceEqual(slider.HeadCircle.Samples)
|
||||||
|
&& circle.SampleControlPoint.IsRedundant(slider.SampleControlPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool sliderRestored(Slider slider)
|
private bool sliderRestored(Slider slider)
|
||||||
|
@ -12,6 +12,7 @@ using osu.Framework.Graphics.Primitives;
|
|||||||
using osu.Framework.Graphics.UserInterface;
|
using osu.Framework.Graphics.UserInterface;
|
||||||
using osu.Framework.Input.Events;
|
using osu.Framework.Input.Events;
|
||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
|
using osu.Game.Beatmaps.ControlPoints;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Rulesets.Edit;
|
using osu.Game.Rulesets.Edit;
|
||||||
using osu.Game.Rulesets.Objects;
|
using osu.Game.Rulesets.Objects;
|
||||||
@ -268,11 +269,17 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders
|
|||||||
while (!Precision.DefinitelyBigger(time, HitObject.GetEndTime(), 1))
|
while (!Precision.DefinitelyBigger(time, HitObject.GetEndTime(), 1))
|
||||||
{
|
{
|
||||||
Vector2 position = HitObject.Position + HitObject.Path.PositionAt((time - HitObject.StartTime) / HitObject.Duration);
|
Vector2 position = HitObject.Position + HitObject.Path.PositionAt((time - HitObject.StartTime) / HitObject.Duration);
|
||||||
|
|
||||||
|
var samplePoint = (SampleControlPoint)HitObject.SampleControlPoint.DeepClone();
|
||||||
|
samplePoint.Time = time;
|
||||||
|
|
||||||
editorBeatmap.Add(new HitCircle
|
editorBeatmap.Add(new HitCircle
|
||||||
{
|
{
|
||||||
StartTime = time,
|
StartTime = time,
|
||||||
Position = position,
|
Position = position,
|
||||||
NewCombo = i == 0 && HitObject.NewCombo
|
NewCombo = i == 0 && HitObject.NewCombo,
|
||||||
|
SampleControlPoint = samplePoint,
|
||||||
|
Samples = HitObject.HeadCircle.Samples.Select(s => s.With()).ToList()
|
||||||
});
|
});
|
||||||
|
|
||||||
i += 1;
|
i += 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user