From 7b99f58a275ae56d0bbe8c06434daa3cc3bcf2c1 Mon Sep 17 00:00:00 2001 From: Thorbjoern Date: Tue, 22 Jul 2025 01:15:09 +0200 Subject: [PATCH] Kind of fixed weird issue with Task not stopping on application Quit --- Assets/_Scenes/TrainingObserverMeta.unity | 12 ++++++++++++ Assets/_Scripts/GhostSystem/GhostReplayManager.cs | 9 ++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Assets/_Scenes/TrainingObserverMeta.unity b/Assets/_Scenes/TrainingObserverMeta.unity index de1c0ba..8282eae 100644 --- a/Assets/_Scenes/TrainingObserverMeta.unity +++ b/Assets/_Scenes/TrainingObserverMeta.unity @@ -33663,6 +33663,18 @@ MonoBehaviour: m_OnValueChanged: m_PersistentCalls: m_Calls: + - m_Target: {fileID: 294328934} + m_TargetAssemblyTypeName: GhostSystem.GhostReplayManager, Assembly-CSharp + m_MethodName: StopAwaitingFrames + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 - m_Target: {fileID: 294328934} m_TargetAssemblyTypeName: GhostSystem.GhostReplayManager, Assembly-CSharp m_MethodName: StopReplay diff --git a/Assets/_Scripts/GhostSystem/GhostReplayManager.cs b/Assets/_Scripts/GhostSystem/GhostReplayManager.cs index 6ae700f..6bb49f2 100644 --- a/Assets/_Scripts/GhostSystem/GhostReplayManager.cs +++ b/Assets/_Scripts/GhostSystem/GhostReplayManager.cs @@ -43,6 +43,7 @@ namespace GhostSystem private float totalDuration = 0f; private string firstTimestamp = ""; private string lastTimestamp = ""; + private bool awaitingFrames; private Dictionary> objectTracks = new(); @@ -108,6 +109,7 @@ namespace GhostSystem if (!supabaseReady || !sceneIdReady) return; sceneId = loadedSceneId; + awaitingFrames = true; await LoadAllFrames(); loadingScreen.SetActive(false); @@ -193,7 +195,7 @@ namespace GhostSystem private async UniTaskVoid PeriodicUpdateFrames() // lädt alle 10 s neue Frames nach, falls verfügbar { - while (true) + while (awaitingFrames) { await UniTask.Delay(TimeSpan.FromSeconds(10)); await LoadNewFramesAfter(latestLoadedTimestamp); @@ -347,6 +349,11 @@ namespace GhostSystem TrackedObjects.RemoveRange(TrackedObjects.Count - doorCount, doorCount); doorCount = 0; } + + public void StopAwaitingFrames() + { + awaitingFrames = false; + } } }