From 2b753480acdadb81a552c697857353c832eb7f4c Mon Sep 17 00:00:00 2001 From: e-dog Date: Fri, 25 Jul 2014 20:10:30 +0300 Subject: [PATCH] Decoupler workaround. --- .../ProceduralFairings/ProceduralFairings.dll | Bin 57344 -> 57344 bytes Misc/makezip.bat | 2 +- Misc/readme.txt | 6 ++ Source/FairingDecoupler.cs | 89 +++++++++++++----- 4 files changed, 75 insertions(+), 22 deletions(-) diff --git a/GameData/ProceduralFairings/ProceduralFairings.dll b/GameData/ProceduralFairings/ProceduralFairings.dll index 8d472bffa5ee060368ad6584c3a1f71d70950097..594fa6779e0060083570d48c5cd447d95a0a7eb9 100644 GIT binary patch delta 15865 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 diff --git a/Misc/makezip.bat b/Misc/makezip.bat index b5a1e29..48056fb 100644 --- a/Misc/makezip.bat +++ b/Misc/makezip.bat @@ -1,5 +1,5 @@ @echo off -set name=C:\games\KSPtest\ProcFairings_3.06.zip +set name=C:\games\KSPtest\ProcFairings_3.07.zip del %name% 7z a %name% readme.txt cd .. diff --git a/Misc/readme.txt b/Misc/readme.txt index e22c648..ebeb773 100644 --- a/Misc/readme.txt +++ b/Misc/readme.txt @@ -44,6 +44,12 @@ Right-click parts and use tweakables. Maximum (and minimum) part size is limited by tech. See GameData/ProceduralFairings/common.cfg for details. --- Version history --- +3.07 +-Added procedural costs for PF parts, KSP 0.24.1 is required. +-Added workaround for Win64 decoupler bug. +-Made "removed" node markers much less visible (they are still somewhere 10km from the VAB). +-Updated KAE DLL. + 3.06 -Updated for KSP 0.24. diff --git a/Source/FairingDecoupler.cs b/Source/FairingDecoupler.cs index 17420ec..5d4b156 100644 --- a/Source/FairingDecoupler.cs +++ b/Source/FairingDecoupler.cs @@ -35,6 +35,9 @@ public class ProceduralFairingDecoupler : PartModule [KSPField] public Vector3 forceVector=Vector3.right; [KSPField] public Vector3 torqueVector=-Vector3.forward; + [KSPField(isPersistant=true)] bool decoupled=false; + bool didForce=false; + public override void OnStart(StartState state) { @@ -55,36 +58,80 @@ public override void OnStart(StartState state) } - [KSPEvent(name = "Jettison", active=true, guiActive=true, guiActiveUnfocused=false, guiName="Jettison")] - public void Jettison() + public override void OnLoad(ConfigNode cfg) { - if (part.parent) - { - foreach (var p in part.parent.children) - foreach (var joint in p.GetComponents()) - if (joint!=null && (joint.rigidbody==part.Rigidbody || joint.connectedBody==part.Rigidbody)) - Destroy(joint); + base.OnLoad(cfg); + didForce=decoupled; + } - part.decouple(0); - var tr=part.FindModelTransform(transformName); - if (tr) + public void FixedUpdate() + { + if (decoupled) + { + if (part.parent) { - part.Rigidbody.AddForce(tr.TransformDirection(forceVector) - *Mathf.Lerp(ejectionLowDv, ejectionDv, ejectionPower), - ForceMode.VelocityChange); - part.Rigidbody.AddTorque(tr.TransformDirection(torqueVector) - *Mathf.Lerp(ejectionLowTorque, ejectionTorque, torqueAmount), - ForceMode.VelocityChange); - } - else - Debug.LogError("[ProceduralFairingDecoupler] no '"+transformName+"' transform in part", part); + foreach (var p in part.parent.children) + foreach (var joint in p.GetComponents()) + if (joint!=null && (joint.rigidbody==part.Rigidbody || joint.connectedBody==part.Rigidbody)) + Destroy(joint); - ejectFx.audio.Play(); + part.decouple(0); + ejectFx.audio.Play(); + } + else if (!didForce) + { + var tr=part.FindModelTransform(transformName); + if (tr) + { + part.Rigidbody.AddForce(tr.TransformDirection(forceVector) + *Mathf.Lerp(ejectionLowDv, ejectionDv, ejectionPower), + ForceMode.VelocityChange); + part.Rigidbody.AddTorque(tr.TransformDirection(torqueVector) + *Mathf.Lerp(ejectionLowTorque, ejectionTorque, torqueAmount), + ForceMode.VelocityChange); + } + else + Debug.LogError("[ProceduralFairingDecoupler] no '"+transformName+"' transform in part", part); + + didForce=true; + } } } + [KSPEvent(name = "Jettison", active=true, guiActive=true, guiActiveUnfocused=false, guiName="Jettison")] + public void Jettison() + { + decoupled=true; + + // if (part.parent) + // { + // foreach (var p in part.parent.children) + // foreach (var joint in p.GetComponents()) + // if (joint!=null && (joint.rigidbody==part.Rigidbody || joint.connectedBody==part.Rigidbody)) + // Destroy(joint); + + // part.decouple(0); + + // var tr=part.FindModelTransform(transformName); + // if (tr) + // { + // part.Rigidbody.AddForce(tr.TransformDirection(forceVector) + // *Mathf.Lerp(ejectionLowDv, ejectionDv, ejectionPower), + // ForceMode.VelocityChange); + // part.Rigidbody.AddTorque(tr.TransformDirection(torqueVector) + // *Mathf.Lerp(ejectionLowTorque, ejectionTorque, torqueAmount), + // ForceMode.VelocityChange); + // } + // else + // Debug.LogError("[ProceduralFairingDecoupler] no '"+transformName+"' transform in part", part); + + // ejectFx.audio.Play(); + // } + } + + public override void OnActive() { Jettison();