diff --git a/GameData/SimpleAdjustableFairings/Patches/TweakScale_ScaleExponents.cfg b/GameData/SimpleAdjustableFairings/Patches/TweakScale_ScaleExponents.cfg new file mode 100644 index 0000000..f194302 --- /dev/null +++ b/GameData/SimpleAdjustableFairings/Patches/TweakScale_ScaleExponents.cfg @@ -0,0 +1,10 @@ +TWEAKSCALEEXPONENTS +{ + name = ModuleSimpleAdjustableFairing + segmentLength = 1 + scale = 1 + deploySpeed = 1 + shieldingCenter = 1 + shieldingBaseRadius = 1 + editorOpenOffset = 1 +} diff --git a/SimpleAdjustableFairings/ModelData.cs b/SimpleAdjustableFairings/ModelData.cs index dc5ade7..e050559 100644 --- a/SimpleAdjustableFairings/ModelData.cs +++ b/SimpleAdjustableFairings/ModelData.cs @@ -38,7 +38,7 @@ public ObjectNotFoundException(string name) : base($"No object named {name} coul [Persistent] public bool enabled = true; - public ResolvedModelData Resolve(GameObject lookupRoot) + public ResolvedModelData Resolve(GameObject lookupRoot, float scale) { if (!enabled) return null; @@ -50,7 +50,7 @@ public ResolvedModelData Resolve(GameObject lookupRoot) if (prefab == null) throw new ObjectNotFoundException(transformName); - return new ResolvedModelData(prefab, mass, CoM, rootOffset); + return new ResolvedModelData(prefab, mass * scale * scale, CoM * scale, rootOffset * scale); } } diff --git a/SimpleAdjustableFairings/ModuleSimpleAdjustableFairing.cs b/SimpleAdjustableFairings/ModuleSimpleAdjustableFairing.cs index 31ef8ca..e67c1ca 100644 --- a/SimpleAdjustableFairings/ModuleSimpleAdjustableFairing.cs +++ b/SimpleAdjustableFairings/ModuleSimpleAdjustableFairing.cs @@ -120,6 +120,8 @@ public class ModuleSimpleAdjustableFairing : PartModule, IScalarModule, IPartCoM private bool needsRecalculateDragCubes; private bool needsNotifyFARToRevoxelize; + private float fairingScale = 1.0f; + #endregion #region Properties @@ -173,6 +175,24 @@ public void ModuleDataChanged(BaseEventDetails details) [KSPEvent] public void FarWasNotifiedToRevoxelize() => needsNotifyFARToRevoxelize = false; + [KSPEvent] + void OnPartScaleChanged(BaseEventDetails data) + { + fairingScale = data.Get("factorAbsolute"); + + if (!FindTransforms()) return; + + // Not yet initialized + if (fairingRoot == null) return; + + SetupFairing(); + + NotifyFARToRevoxelize(); + RecalculateDragCubes(); + + IgnoreColliders(); + } + #endregion #region Actions @@ -434,7 +454,7 @@ private bool FindTransforms() { try { - wallBaseObjectPrefab = wallBaseData.Resolve(modelRoot); + wallBaseObjectPrefab = wallBaseData.Resolve(modelRoot, fairingScale); } catch (ModelData.ResolveException ex) { @@ -447,7 +467,7 @@ private bool FindTransforms() { try { - wallObjectPrefab = wallData.Resolve(modelRoot); + wallObjectPrefab = wallData.Resolve(modelRoot, fairingScale); } catch (ModelData.ResolveException ex) { @@ -460,7 +480,7 @@ private bool FindTransforms() { try { - capObjectPrefab = capData.Resolve(modelRoot); + capObjectPrefab = capData.Resolve(modelRoot, fairingScale); } catch (ModelData.ResolveException ex) { @@ -483,7 +503,7 @@ private bool FindTransforms() { try { - coneObjectPrefab = coneData.Resolve(modelRoot); + coneObjectPrefab = coneData.Resolve(modelRoot, fairingScale); } catch (ModelData.ResolveException ex) {