workaround sneaky spirits pause jank

make BeatAction also wait for conductor DSP to start
remove leftover logic from old conductor sync
fix #630
fix #632
fix #633
This commit is contained in:
minenice55
2024-01-17 18:43:26 -05:00
parent 6b3b616590
commit 0e1c9bad68
24 changed files with 1320 additions and 140 deletions

View File

@ -49,12 +49,13 @@ namespace HeavenStudio.Util
static async UniTask BeatActionAsync(MonoBehaviour behaviour, List<Action> actions, CancellationToken token)
{
Conductor conductor = Conductor.instance;
int idx = 0;
while (idx < actions.Count)
{
await UniTask.WaitUntil(() => Conductor.instance.songPositionInBeatsAsDouble >= actions[idx].beat || !(Conductor.instance.isPlaying || Conductor.instance.isPaused) || behaviour == null, cancellationToken: token);
await UniTask.WaitUntil(() => (conductor.songPositionInBeatsAsDouble >= actions[idx].beat && !conductor.WaitingForDsp) || !(conductor.isPlaying || conductor.isPaused) || behaviour == null, cancellationToken: token);
if (behaviour == null || !(Conductor.instance.isPlaying || Conductor.instance.isPaused))
if (behaviour == null || !(conductor.isPlaying || conductor.isPaused))
return;
actions[idx].function.Invoke();