From b56a3376e1a500404706dfff7dbeb95d4ec4c392 Mon Sep 17 00:00:00 2001 From: JohnCorby Date: Wed, 11 May 2022 09:53:48 -0700 Subject: [PATCH] JoinLeaveSingularity - cancel if PlayerTransformSync is destroyed, and also check for player.Body before running leave singularity for if they leave while still on the title screen --- QSB/Player/JoinLeaveSingularity.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/QSB/Player/JoinLeaveSingularity.cs b/QSB/Player/JoinLeaveSingularity.cs index 92dac01b..42c117a4 100644 --- a/QSB/Player/JoinLeaveSingularity.cs +++ b/QSB/Player/JoinLeaveSingularity.cs @@ -19,7 +19,7 @@ public static class JoinLeaveSingularity if (joining) { if (PlayerTransformSync.LocalInstance == null || - player.PlayerId < QSBPlayerManager.LocalPlayerId) + player.PlayerId < QSBPlayerManager.LocalPlayerId) { // player was here before we joined return; @@ -31,10 +31,19 @@ public static class JoinLeaveSingularity { return; } + + if (!player.Body) + { + // player was kicked (i.e. player body doesn't exist cuz they're still in title screen) + return; + } } var go = new GameObject($"player {player} JoinLeaveSingularity"); - var ct = go.GetCancellationTokenOnDestroy(); + var ct = CancellationTokenSource.CreateLinkedTokenSource( + go.GetCancellationTokenOnDestroy(), + player.TransformSync.GetCancellationTokenOnDestroy() + ).Token; UniTask.Create(async () => { DebugLog.DebugWrite($"{go.name}: WARP TASK"); @@ -142,4 +151,4 @@ public static class JoinLeaveSingularity }; await UniTask.WaitUntil(() => !effect.enabled && !singularity._owOneShotSource.isPlaying, cancellationToken: ct); } -} \ No newline at end of file +}