diff --git a/Assets/Cryville/Crtr/Chart.cs b/Assets/Cryville/Crtr/Chart.cs index 61f2602..df6214a 100644 --- a/Assets/Cryville/Crtr/Chart.cs +++ b/Assets/Cryville/Crtr/Chart.cs @@ -16,7 +16,12 @@ namespace Cryville.Crtr { n = _n; d = _d; } - + public BeatTime(int _n, int _d) { + b = _n / _d; + n = _n % _d; + d = _d; + } + [JsonIgnore] public int b; diff --git a/Assets/Cryville/Crtr/Extensions/TimingModel.cs b/Assets/Cryville/Crtr/Extensions/TimingModel.cs index de7332a..bd738c3 100644 --- a/Assets/Cryville/Crtr/Extensions/TimingModel.cs +++ b/Assets/Cryville/Crtr/Extensions/TimingModel.cs @@ -39,4 +39,16 @@ namespace Cryville.Crtr.Extensions { return new BeatTime(i, n, d); } } + public class TimeTimingModel : TimingModel { + public TimeTimingModel(double offset = 0) : base(offset) { } + public void ForwardTo(double t) { + if (t == Time) return; + if (BPM == 0) throw new InvalidOperationException("BPM not determined"); + BeatTime += (t - Time) * BPM / 60; + int n, d; + FractionUtils.ToFraction(BeatTime, 1f / 48 / BPM * 60, out n, out d); + FractionalBeatTime = new BeatTime(n, d); + Time = t; + } + } }