From c9412610d1d6c7a13d74095780a52df05c62ccb2 Mon Sep 17 00:00:00 2001 From: Lexi Date: Thu, 21 Dec 2023 16:40:50 -0500 Subject: [PATCH] undo caching --- .../PartOwnerComponentOnFixedUpdate.cs | 35 ++++++------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/src/SpaceWarp.Core/Patching/PartOwnerComponentOnFixedUpdate.cs b/src/SpaceWarp.Core/Patching/PartOwnerComponentOnFixedUpdate.cs index ce937cf..6878e22 100644 --- a/src/SpaceWarp.Core/Patching/PartOwnerComponentOnFixedUpdate.cs +++ b/src/SpaceWarp.Core/Patching/PartOwnerComponentOnFixedUpdate.cs @@ -8,42 +8,27 @@ namespace SpaceWarp.Patching; [HarmonyPatch] internal class PartOwnerComponentOnFixedUpdate { - private class ReferenceBoolean - { - internal static ReferenceBoolean TRUE = new(); - internal static ReferenceBoolean FALSE = new(); - public static implicit operator ReferenceBoolean(bool b) => b ? TRUE : FALSE; - public static implicit operator bool(ReferenceBoolean b) => b == TRUE; - } - - private static ConditionalWeakTable AlreadyCachedOwners = new(); [HarmonyPatch(typeof(PartOwnerComponent), "OnFixedUpdate"), HarmonyPrefix] private static bool PerformBackgroundCalculationsForRegisteredModules(double universalTime, double deltaUniversalTime, PartOwnerComponent __instance) { - if (!AlreadyCachedOwners.TryGetValue(__instance, out var isModulePresent)) - { - isModulePresent = false; - var hasPartModuleMethod = __instance.GetType().GetMethod("HasPartModule"); + var isModulePresent = false; + var hasPartModuleMethod = __instance.GetType().GetMethod("HasPartModule"); - if (hasPartModuleMethod != null) + if (hasPartModuleMethod != null) + { + // Go through each registered module and check if it's present in PartOwnerComponent modules + foreach (var moduleType in PartComponentModuleOverride.RegisteredPartComponentOverrides) { - // Go through each registered module and check if it's present in PartOwnerComponent modules - foreach (var moduleType in PartComponentModuleOverride.RegisteredPartComponentOverrides) + var genericMethod = hasPartModuleMethod.MakeGenericMethod(moduleType); + if ((bool)genericMethod.Invoke(__instance, null)) { - var genericMethod = hasPartModuleMethod.MakeGenericMethod(moduleType); - if ((bool)genericMethod.Invoke(__instance, null)) - { - isModulePresent = true; - break; - } + isModulePresent = true; + break; } } - - AlreadyCachedOwners.Add(__instance, isModulePresent); } - // If registered module is present, run the original 0.1.5 method that runs background resource checks if (isModulePresent) {