From cc46719a24c9450732c2f2cd3c9745d1dcdd4556 Mon Sep 17 00:00:00 2001 From: Alexander Rogov Date: Sat, 6 Mar 2021 14:47:00 +0500 Subject: [PATCH] TweakScale support --- .../Patches/TweakScale_ScaleExponents.cfg | 10 +++++++ SimpleAdjustableFairings/ModelData.cs | 4 +-- .../ModuleSimpleAdjustableFairing.cs | 28 ++++++++++++++++--- 3 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 GameData/SimpleAdjustableFairings/Patches/TweakScale_ScaleExponents.cfg 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) {