Skip to content

Commit 63ad0b4

Browse files
authored
Merge pull request #7
Update ModuleCoPFollowTransform to use part prefabs better. Thanks @JonnyOThan
2 parents c05d9e3 + c47d501 commit 63ad0b4

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

Source/Modules/ModuleCoPFollowTransform.cs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,43 @@ public class ModuleCoPFollowTransform : PartModule
1515
[KSPField]
1616
public string transformName;
1717

18+
[SerializeField]
1819
private Transform followTransform;
1920

2021
public override void OnLoad(ConfigNode node)
2122
{
22-
base.OnLoad(node);
23-
if (HighLogic.LoadedScene != GameScenes.LOADING)
23+
if (followTransform == null || followTransform.name != transformName)
2424
{
2525
if (transformName != null) followTransform = part.FindModelTransform(transformName);
26-
if (followTransform == null) Debug.LogError($"[{MODULENAME}] transformName was empty or does not exist.");
26+
if (followTransform == null) Debug.LogError($"[{MODULENAME}] transformName '{transformName}' was empty or does not exist on part '{part.partInfo?.name}'");
2727
}
28+
29+
if (followTransform == null && part.partInfo != null)
30+
{
31+
// this may be important if someone is swapping out versions of this module with B9PS
32+
// Note this probably isn't correct for parts that also have modules that mess with this field (e.g. ModuleProceduralFairing)
33+
part.CoPOffset = part.partInfo.partPrefab.CoPOffset;
34+
}
35+
36+
// NOTE: isEnabled will be persisted to the save file, but we want to treat it purely as runtime state
37+
this.isEnabled = followTransform != null;
38+
this.enabled = followTransform != null && HighLogic.LoadedSceneIsFlight;
2839
}
2940

3041
public void FixedUpdate()
3142
{
32-
if (followTransform != null) part.CoPOffset = part.transform.InverseTransformPoint(followTransform.position);
43+
// Note that we shouldn't ever get here if the transform just didn't exist
44+
// But it's certainly possible for *something* to delete it later
45+
if (followTransform == null)
46+
{
47+
isEnabled = false;
48+
enabled = false;
49+
// should we reset CoPOffset here? Not sure.
50+
}
51+
else
52+
{
53+
part.CoPOffset = part.transform.InverseTransformPoint(followTransform.position);
54+
}
3355
}
3456
}
3557
}

0 commit comments

Comments
 (0)