From 1f4b847ceac29f7f0be3cca61a1f8bbe897f5f79 Mon Sep 17 00:00:00 2001 From: Sofie <63377159+SofieBrink@users.noreply.github.com> Date: Sat, 16 Nov 2024 20:15:19 +0100 Subject: [PATCH] Improve coroutine performance Fixes #33 --- Source/Modules/ModuleBCSAirbags.cs | 6 +++--- Source/Modules/ModuleDecoupleAtAltitude.cs | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Source/Modules/ModuleBCSAirbags.cs b/Source/Modules/ModuleBCSAirbags.cs index 866dc53..905efe6 100644 --- a/Source/Modules/ModuleBCSAirbags.cs +++ b/Source/Modules/ModuleBCSAirbags.cs @@ -261,7 +261,7 @@ private void SetupPartIcon() } } - private void StopAltitudeCoroutine() + private void StopAltitudeCoroutine() { if (altitudeCoroutine != null) { @@ -323,7 +323,7 @@ private void PlayAnimation(Animation anim, string animationName, float start, fl // Coroutines public IEnumerator AltitudeCoroutine() { - yield return new WaitUntil(ShouldDeploy); + while (!ShouldDeploy()) yield return new WaitForFixedUpdate(); part.stackIcon.SetIconColor(XKCDColors.Yellow); if (nodeCoroutine == null) nodeCoroutine = StartCoroutine(NodeCoroutine()); } @@ -331,7 +331,7 @@ public IEnumerator AltitudeCoroutine() public IEnumerator NodeCoroutine() { StopAltitudeCoroutine(); - yield return new WaitUntil(NodeDetached); + while (!NodeDetached()) yield return new WaitForFixedUpdate(); bool isAboveWater = vessel.terrainAltitude <= 0; if ((isAboveWater && !deployAboveWater) || (!isAboveWater && !deployAboveLand)) Disarm(); diff --git a/Source/Modules/ModuleDecoupleAtAltitude.cs b/Source/Modules/ModuleDecoupleAtAltitude.cs index e23eaff..36f48eb 100644 --- a/Source/Modules/ModuleDecoupleAtAltitude.cs +++ b/Source/Modules/ModuleDecoupleAtAltitude.cs @@ -106,7 +106,8 @@ protected bool ShouldJetison() public IEnumerator AltitudeDecouple() { - yield return new WaitUntil(ShouldJetison); + while (!ShouldJetison()) yield return new WaitForFixedUpdate(); + Decouple(); } }