swing prep
This commit is contained in:
parent
fc3c9f82eb
commit
e0c01488e4
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue