@@ -15,20 +15,22 @@ public class ModuleCenterFollowTransform : PartModule
1515
1616 [ KSPField ]
1717 public bool enableCoP = false ;
18+ private bool wasEnabledCoP ;
1819
1920 [ KSPField ]
2021 public bool enableCoM = false ;
22+ private bool wasEnabledCoM ;
2123
2224 [ KSPField ]
2325 public bool enableCoL = false ;
26+ private bool wasEnabledCoL ;
2427
2528 [ KSPField ]
2629 public string transformName ;
2730
2831 [ SerializeField ]
2932 private Transform followTransform ;
3033
31- // TODO: Reset offset to prefab value if B9PS disables one of the fields.
3234 public override void OnLoad ( ConfigNode node )
3335 {
3436 bool anyModeActive = enableCoP || enableCoM || enableCoL ;
@@ -51,7 +53,14 @@ public override void OnLoad(ConfigNode node)
5153 if ( enableCoM ) part . CoMOffset = part . partInfo . partPrefab . CoMOffset ;
5254 if ( enableCoL ) part . CoLOffset = part . partInfo . partPrefab . CoLOffset ;
5355 }
54-
56+ // Set offets back to the values in the prefab if the mode is disabled after initial initialisation; e.g. B9PS
57+ if ( ! enableCoP && wasEnabledCoP ) part . CoPOffset = part . partInfo . partPrefab . CoPOffset ;
58+ if ( ! enableCoM && wasEnabledCoM ) part . CoMOffset = part . partInfo . partPrefab . CoMOffset ;
59+ if ( ! enableCoL && wasEnabledCoL ) part . CoLOffset = part . partInfo . partPrefab . CoLOffset ;
60+ wasEnabledCoP = enableCoP ;
61+ wasEnabledCoM = enableCoM ;
62+ wasEnabledCoL = enableCoL ;
63+
5564 // NOTE: isEnabled will be persisted to the save file, but we want to treat it purely as runtime state
5665 isEnabled = followTransform != null && anyModeActive ;
5766 enabled = followTransform != null && anyModeActive && HighLogic . LoadedSceneIsFlight ;
0 commit comments