diff --git a/QSB/Utility/Deterministic/DeterministicManager.cs b/QSB/Utility/Deterministic/DeterministicManager.cs index d4bd4b01..d5a5a15b 100644 --- a/QSB/Utility/Deterministic/DeterministicManager.cs +++ b/QSB/Utility/Deterministic/DeterministicManager.cs @@ -24,7 +24,7 @@ public static class DeterministicManager if (!_patched) { - _harmony.PatchAll(typeof(OWRigidbodyPatches)); + _harmony.PatchAll(typeof(DeterministicRigidbodyPatches)); _patched = true; } }; diff --git a/QSB/Utility/Deterministic/OWRigidbodyPatches.cs b/QSB/Utility/Deterministic/DeterministicRigidbodyPatches.cs similarity index 93% rename from QSB/Utility/Deterministic/OWRigidbodyPatches.cs rename to QSB/Utility/Deterministic/DeterministicRigidbodyPatches.cs index 3005321e..e3eaa585 100644 --- a/QSB/Utility/Deterministic/OWRigidbodyPatches.cs +++ b/QSB/Utility/Deterministic/DeterministicRigidbodyPatches.cs @@ -4,9 +4,16 @@ using UnityEngine; namespace QSB.Utility.Deterministic; +/// +/// used to capture the true path of a rigidbody before it unparents +/// [HarmonyPatch(typeof(OWRigidbody))] -public static class OWRigidbodyPatches +public static class DeterministicRigidbodyPatches { + /// + /// changing the parent has to be deferred until Start to preserve the sibling index. + /// for example, anglerfish bodies all share the same parent, so unparenting one clobbers the sibling index of all the others. + /// private static readonly Dictionary _setParentQueue = new(); [HarmonyPrefix]