1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-15 16:19:35 +08:00

Merge branch 'editor-clock-cache' into editor-clock-transform

This commit is contained in:
Dean Herbert 2020-05-24 12:55:47 +09:00
commit decdc58de5
7 changed files with 19 additions and 9 deletions

View File

@ -162,8 +162,9 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
if (ControlPoint == slider.Path.ControlPoints[0]) if (ControlPoint == slider.Path.ControlPoints[0])
{ {
// Special handling for the head control point - the position of the slider changes which means the snapped position and time have to be taken into account // Special handling for the head control point - the position of the slider changes which means the snapped position and time have to be taken into account
var result = snapProvider?.SnapScreenSpacePositionToValidTime(e.MousePosition); var result = snapProvider?.SnapScreenSpacePositionToValidTime(e.ScreenSpaceMousePosition);
Vector2 movementDelta = (result?.ScreenSpacePosition ?? e.MousePosition) - slider.Position;
Vector2 movementDelta = Parent.ToLocalSpace(result?.ScreenSpacePosition ?? e.ScreenSpaceMousePosition) - slider.Position;
slider.Position += movementDelta; slider.Position += movementDelta;
slider.StartTime = result?.Time ?? slider.StartTime; slider.StartTime = result?.Time ?? slider.StartTime;

View File

@ -34,7 +34,7 @@ namespace osu.Game.Beatmaps
/// <summary> /// <summary>
/// Handles the storage and retrieval of Beatmaps/WorkingBeatmaps. /// Handles the storage and retrieval of Beatmaps/WorkingBeatmaps.
/// </summary> /// </summary>
public partial class BeatmapManager : DownloadableArchiveModelManager<BeatmapSetInfo, BeatmapSetFileInfo> public partial class BeatmapManager : DownloadableArchiveModelManager<BeatmapSetInfo, BeatmapSetFileInfo>, IDisposable
{ {
/// <summary> /// <summary>
/// Fired when a single difficulty has been hidden. /// Fired when a single difficulty has been hidden.
@ -433,6 +433,11 @@ namespace osu.Game.Beatmaps
return endTime - startTime; return endTime - startTime;
} }
public void Dispose()
{
onlineLookupQueue?.Dispose();
}
/// <summary> /// <summary>
/// A dummy WorkingBeatmap for the purpose of retrieving a beatmap for star difficulty calculation. /// A dummy WorkingBeatmap for the purpose of retrieving a beatmap for star difficulty calculation.
/// </summary> /// </summary>

View File

@ -23,7 +23,7 @@ namespace osu.Game.Beatmaps
{ {
public partial class BeatmapManager public partial class BeatmapManager
{ {
private class BeatmapOnlineLookupQueue private class BeatmapOnlineLookupQueue : IDisposable
{ {
private readonly IAPIProvider api; private readonly IAPIProvider api;
private readonly Storage storage; private readonly Storage storage;
@ -180,6 +180,11 @@ namespace osu.Game.Beatmaps
return false; return false;
} }
public void Dispose()
{
cacheDownloadRequest?.Dispose();
}
[Serializable] [Serializable]
[SuppressMessage("ReSharper", "InconsistentNaming")] [SuppressMessage("ReSharper", "InconsistentNaming")]
private class CachedOnlineBeatmapLookup private class CachedOnlineBeatmapLookup

View File

@ -337,6 +337,7 @@ namespace osu.Game
{ {
base.Dispose(isDisposing); base.Dispose(isDisposing);
RulesetStore?.Dispose(); RulesetStore?.Dispose();
BeatmapManager?.Dispose();
contextFactory.FlushConnections(); contextFactory.FlushConnections();
} }

View File

@ -63,9 +63,7 @@ namespace osu.Game.Rulesets.Edit
/// <param name="commitStart">Whether this call is committing a value for HitObject.StartTime and continuing with further adjustments.</param> /// <param name="commitStart">Whether this call is committing a value for HitObject.StartTime and continuing with further adjustments.</param>
protected void BeginPlacement(bool commitStart = false) protected void BeginPlacement(bool commitStart = false)
{ {
// applies snapping to above time
placementHandler.BeginPlacement(HitObject); placementHandler.BeginPlacement(HitObject);
PlacementActive |= commitStart; PlacementActive |= commitStart;
} }

View File

@ -180,8 +180,8 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
[Resolved] [Resolved]
private IBeatSnapProvider beatSnapProvider { get; set; } private IBeatSnapProvider beatSnapProvider { get; set; }
public SnapResult SnapScreenSpacePositionToValidTime(Vector2 position) => public SnapResult SnapScreenSpacePositionToValidTime(Vector2 screenSpacePosition) =>
new SnapResult(position, beatSnapProvider.SnapTime(getTimeFromPosition(Content.ToLocalSpace(position)))); new SnapResult(screenSpacePosition, beatSnapProvider.SnapTime(getTimeFromPosition(Content.ToLocalSpace(screenSpacePosition))));
private double getTimeFromPosition(Vector2 localPosition) => private double getTimeFromPosition(Vector2 localPosition) =>
(localPosition.X / Content.DrawWidth) * track.Length; (localPosition.X / Content.DrawWidth) * track.Length;

View File

@ -282,7 +282,7 @@ namespace osu.Game.Screens.Edit.Compose.Components.Timeline
case IHasRepeats repeatHitObject: case IHasRepeats repeatHitObject:
// find the number of repeats which can fit in the requested time. // find the number of repeats which can fit in the requested time.
var lengthOfOneRepeat = repeatHitObject.Duration / (repeatHitObject.RepeatCount + 1); var lengthOfOneRepeat = repeatHitObject.Duration / (repeatHitObject.RepeatCount + 1);
var proposedCount = Math.Max(0, (int)((time - hitObject.StartTime) / lengthOfOneRepeat) - 1); var proposedCount = Math.Max(0, (int)Math.Round((time - hitObject.StartTime) / lengthOfOneRepeat) - 1);
if (proposedCount == repeatHitObject.RepeatCount) if (proposedCount == repeatHitObject.RepeatCount)
return; return;