swing prep

This commit is contained in:
minenice55 2023-12-16 00:25:37 -05:00
parent fc3c9f82eb
commit e0c01488e4

View file

@ -472,12 +472,14 @@ namespace HeavenStudio
return GameManager.instance.Beatmap.TempoChanges; return GameManager.instance.Beatmap.TempoChanges;
} }
public float GetBpmAtBeat(double beat) public float GetBpmAtBeat(double beat, out float swingRatio)
{ {
swingRatio = 0.5f;
var chart = GameManager.instance.Beatmap; var chart = GameManager.instance.Beatmap;
if (chart.TempoChanges.Count == 0) if (chart.TempoChanges.Count == 0)
return 120f; return 120f;
float bpm = chart.TempoChanges[0]["tempo"]; float bpm = chart.TempoChanges[0]["tempo"];
swingRatio = chart.TempoChanges[0]["swing"] + 0.5f;
foreach (RiqEntity t in chart.TempoChanges) foreach (RiqEntity t in chart.TempoChanges)
{ {
@ -486,11 +488,42 @@ namespace HeavenStudio
break; break;
} }
bpm = t["tempo"]; bpm = t["tempo"];
swingRatio = t["swing"] + 0.5f;
} }
return bpm; return bpm;
} }
public float GetBpmAtBeat(double beat)
{
return GetBpmAtBeat(beat, out _);
}
public float GetSwingRatioAtBeat(double beat)
{
float swingRatio;
GetBpmAtBeat(beat, out swingRatio);
return swingRatio;
}
public double GetSwungBeat(double beat, float ratio)
{
return beat + GetSwingOffset(beat, ratio);
}
public double GetSwingOffset(double beatFrac, float ratio)
{
beatFrac %= 1;
if (beatFrac <= 0.5)
{
return 0.5 / ratio * beatFrac;
}
else
{
return 0.5 + (0.5 / (1f - ratio) * (beatFrac - ratio));
}
}
public double GetSongPosFromBeat(double beat) public double GetSongPosFromBeat(double beat)
{ {
var chart = GameManager.instance.Beatmap; var chart = GameManager.instance.Beatmap;