// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. namespace osu.Game.Rulesets.Edit { public interface IBeatSnapProvider { /// /// Snaps a duration to the closest beat of a timing point applicable at the reference time, factoring in the current . /// /// The time to snap. /// An optional reference point to use for timing point lookup. /// A value that represents snapped to the closest beat of the timing point. double SnapTime(double time, double? referenceTime = null); /// /// Get the most appropriate beat length at a given time, pre-divided by . /// /// A reference time used for lookup. /// The most appropriate beat length, divided by . double GetBeatLengthAtTime(double referenceTime); /// /// Returns the current beat divisor. /// int BeatDivisor { get; } } }