mirror of
https://github.com/ppy/osu.git
synced 2025-02-15 23:42:55 +08:00
Seek to the first hitobject when entering the editor (#6766)
Seek to the first hitobject when entering the editor Co-authored-by: Dean Herbert <pe@ppy.sh>
This commit is contained in:
commit
5699f3e22b
@ -244,7 +244,8 @@ namespace osu.Game.Screens.Edit
|
|||||||
base.OnEntering(last);
|
base.OnEntering(last);
|
||||||
|
|
||||||
Background.FadeColour(Color4.DarkGray, 500);
|
Background.FadeColour(Color4.DarkGray, 500);
|
||||||
resetTrack();
|
|
||||||
|
resetTrack(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool OnExiting(IScreen next)
|
public override bool OnExiting(IScreen next)
|
||||||
@ -255,10 +256,24 @@ namespace osu.Game.Screens.Edit
|
|||||||
return base.OnExiting(next);
|
return base.OnExiting(next);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetTrack()
|
private void resetTrack(bool seekToStart = false)
|
||||||
{
|
{
|
||||||
Beatmap.Value.Track?.ResetSpeedAdjustments();
|
Beatmap.Value.Track?.ResetSpeedAdjustments();
|
||||||
Beatmap.Value.Track?.Stop();
|
Beatmap.Value.Track?.Stop();
|
||||||
|
|
||||||
|
if (seekToStart)
|
||||||
|
{
|
||||||
|
double targetTime = 0;
|
||||||
|
|
||||||
|
if (Beatmap.Value.Beatmap.HitObjects.Count > 0)
|
||||||
|
{
|
||||||
|
// seek to one beat length before the first hitobject
|
||||||
|
targetTime = Beatmap.Value.Beatmap.HitObjects[0].StartTime;
|
||||||
|
targetTime -= Beatmap.Value.Beatmap.ControlPointInfo.TimingPointAt(targetTime).BeatLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
clock.Seek(Math.Max(0, targetTime));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void exportBeatmap() => host.OpenFileExternally(Beatmap.Value.Save());
|
private void exportBeatmap() => host.OpenFileExternally(Beatmap.Value.Save());
|
||||||
|
Loading…
Reference in New Issue
Block a user