From 2f80209dd332113993db090c3f22513fb8db4ce8 Mon Sep 17 00:00:00 2001 From: Lisias T Date: Tue, 11 Jun 2019 21:00:15 -0300 Subject: [PATCH 1/2] Making Firespitter compatible with Principia and other mods that inspect the force vectors. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See [this post](https://forum.kerbalspaceprogram.com/index.php?/topic/162200-wip131-14x-151-161-170-principia—version-fatou-released-2019-06-03—n-body-and-extended-body-gravitation-axial-tilt/&do=findComment&comment=3596092) for details --- Firespitter/aero/FSliftSurface.cs | 7 ++++--- Firespitter/engine/FS engine modules/FSengine.cs | 2 +- Firespitter/engine/FSvelocityController.cs | 4 ++-- Firespitter/water/FSrudder.cs | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Firespitter/aero/FSliftSurface.cs b/Firespitter/aero/FSliftSurface.cs index 3d0a7a18..6a7efb49 100644 --- a/Firespitter/aero/FSliftSurface.cs +++ b/Firespitter/aero/FSliftSurface.cs @@ -148,9 +148,10 @@ public void FixedUpdate() Vector3 liftVector = getLiftVector(); //Vector3 liftVector = liftAndDrag.x * -liftTransform.up; - commonRigidBody.AddForceAtPosition(liftVector, liftTransform.position); - - commonRigidBody.AddForceAtPosition(liftAndDrag.y * dragMultiplier * -commonRigidBody.GetPointVelocity(liftTransform.position).normalized, liftTransform.position); + part.AddForceAtPosition(liftVector, liftTransform.position); + + // Warning: what happens when cmoonRigidBody is null? See getLiftAndDrag on line 75! + part.AddForceAtPosition(liftAndDrag.y * dragMultiplier * commonRigidBody.GetPointVelocity(liftTransform.position).normalized, liftTransform.position); } public override void OnUpdate() diff --git a/Firespitter/engine/FS engine modules/FSengine.cs b/Firespitter/engine/FS engine modules/FSengine.cs index 83b73c08..5756f24c 100644 --- a/Firespitter/engine/FS engine modules/FSengine.cs +++ b/Firespitter/engine/FS engine modules/FSengine.cs @@ -320,7 +320,7 @@ private void HandleFixedUpdate() for (int i = 0; i < thrustTransforms.Length; i++) { - GetComponent().AddForceAtPosition(-thrustTransforms[i].forward * applyThrust, thrustTransforms[i].position); + this.GetComponent().AddForceAtPosition(-thrustTransforms[i].forward * applyThrust, thrustTransforms[i].position); } smoothFxThrust = Mathf.Lerp(smoothFxThrust, finalThrustNormalized, smoothFXSpeed); diff --git a/Firespitter/engine/FSvelocityController.cs b/Firespitter/engine/FSvelocityController.cs index 56403679..ab078dda 100644 --- a/Firespitter/engine/FSvelocityController.cs +++ b/Firespitter/engine/FSvelocityController.cs @@ -110,7 +110,7 @@ public override void OnFixedUpdate() if (!resourceReceived) thrustUsed = 0f; if (thrustUsed > 0f) - part.gameObject.GetComponent().AddForceAtPosition(finalThrust, t.transform.position); + part.gameObject.GetComponent().AddForceAtPosition(finalThrust, t.transform.position); if (useFX) { particleFX[i].pEmitter.minEmission = defaultEmitterMinEmission * thrustUsed; @@ -149,7 +149,7 @@ private float updateThruster(int fxNumber, bool doThrust, Transform t) if (thrustModifier > 0f && velocityDirection.magnitude > minVelocityToActivate) { finalThrust = -thrustDirection * thrustModifier * maxThrust; - //part.gameObject.GetComponent().AddForceAtPosition(-thrustDirection * thrustModifier * maxThrust, t.transform.position); + part.gameObject.GetComponent().AddForceAtPosition(-thrustDirection * thrustModifier * maxThrust, t.transform.position); } else { diff --git a/Firespitter/water/FSrudder.cs b/Firespitter/water/FSrudder.cs index e7f861a3..149b7476 100644 --- a/Firespitter/water/FSrudder.cs +++ b/Firespitter/water/FSrudder.cs @@ -189,7 +189,7 @@ public void FixedUpdate() transformDirection = -transform.forward; break; } - base.GetComponent().AddForceAtPosition(transformDirection * forcetoAdd, base.transform.position); + this.GetComponent().AddForceAtPosition(transformDirection * forcetoAdd, base.transform.position); if (rudderTransform != null) { From badb2a2006de50e6018b99e736eef871b3a32726 Mon Sep 17 00:00:00 2001 From: Lisias Date: Sun, 24 May 2020 14:46:57 -0300 Subject: [PATCH 2/2] Revised changes for "Making Firespitter compatible with Principia and other Add'Ons that inspect the force vectors" --- Firespitter/aero/FSbladeLiftSurface.cs | 4 ++-- Firespitter/aero/FSliftSurface.cs | 6 +++--- Firespitter/engine/FS engine modules/FSengine.cs | 2 +- Firespitter/engine/FSvelocityController.cs | 4 ++-- Firespitter/water/FSbuoyancy.cs | 2 +- Firespitter/water/FSrudder.cs | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Firespitter/aero/FSbladeLiftSurface.cs b/Firespitter/aero/FSbladeLiftSurface.cs index 22b81d88..6ddab9e3 100644 --- a/Firespitter/aero/FSbladeLiftSurface.cs +++ b/Firespitter/aero/FSbladeLiftSurface.cs @@ -218,9 +218,9 @@ public void FixedUpdate() Vector3 liftVector = getLiftVector(); - commonRigidBody.AddForceAtPosition(liftVector, liftTransform.position); + this.part.AddForceAtPosition(liftVector, liftTransform.position); - commonRigidBody.AddForceAtPosition(liftAndDrag.y * dragMultiplier * -commonRigidBody.GetPointVelocity(liftTransform.position).normalized, liftTransform.position); + this.part.AddForceAtPosition(liftAndDrag.y * dragMultiplier * -commonRigidBody.GetPointVelocity(liftTransform.position).normalized, liftTransform.position); } catch (Exception e) { diff --git a/Firespitter/aero/FSliftSurface.cs b/Firespitter/aero/FSliftSurface.cs index 6a7efb49..49ecc490 100644 --- a/Firespitter/aero/FSliftSurface.cs +++ b/Firespitter/aero/FSliftSurface.cs @@ -148,10 +148,10 @@ public void FixedUpdate() Vector3 liftVector = getLiftVector(); //Vector3 liftVector = liftAndDrag.x * -liftTransform.up; - part.AddForceAtPosition(liftVector, liftTransform.position); + this.part.AddForceAtPosition(liftVector, liftTransform.position); - // Warning: what happens when cmoonRigidBody is null? See getLiftAndDrag on line 75! - part.AddForceAtPosition(liftAndDrag.y * dragMultiplier * commonRigidBody.GetPointVelocity(liftTransform.position).normalized, liftTransform.position); + // Warning: what happens when commonRigidBody is null? See getLiftAndDrag on line 75! + this.part.AddForceAtPosition(liftAndDrag.y * dragMultiplier * commonRigidBody.GetPointVelocity(liftTransform.position).normalized, liftTransform.position); } public override void OnUpdate() diff --git a/Firespitter/engine/FS engine modules/FSengine.cs b/Firespitter/engine/FS engine modules/FSengine.cs index 5756f24c..86e95e8a 100644 --- a/Firespitter/engine/FS engine modules/FSengine.cs +++ b/Firespitter/engine/FS engine modules/FSengine.cs @@ -320,7 +320,7 @@ private void HandleFixedUpdate() for (int i = 0; i < thrustTransforms.Length; i++) { - this.GetComponent().AddForceAtPosition(-thrustTransforms[i].forward * applyThrust, thrustTransforms[i].position); + this.part.AddForceAtPosition(-thrustTransforms[i].forward * applyThrust, thrustTransforms[i].position); } smoothFxThrust = Mathf.Lerp(smoothFxThrust, finalThrustNormalized, smoothFXSpeed); diff --git a/Firespitter/engine/FSvelocityController.cs b/Firespitter/engine/FSvelocityController.cs index ab078dda..1f19d8c8 100644 --- a/Firespitter/engine/FSvelocityController.cs +++ b/Firespitter/engine/FSvelocityController.cs @@ -110,7 +110,7 @@ public override void OnFixedUpdate() if (!resourceReceived) thrustUsed = 0f; if (thrustUsed > 0f) - part.gameObject.GetComponent().AddForceAtPosition(finalThrust, t.transform.position); + this.part.AddForceAtPosition(finalThrust, t.transform.position); if (useFX) { particleFX[i].pEmitter.minEmission = defaultEmitterMinEmission * thrustUsed; @@ -149,7 +149,7 @@ private float updateThruster(int fxNumber, bool doThrust, Transform t) if (thrustModifier > 0f && velocityDirection.magnitude > minVelocityToActivate) { finalThrust = -thrustDirection * thrustModifier * maxThrust; - part.gameObject.GetComponent().AddForceAtPosition(-thrustDirection * thrustModifier * maxThrust, t.transform.position); + this.part.AddForceAtPosition(-thrustDirection * thrustModifier * maxThrust, t.transform.position); } else { diff --git a/Firespitter/water/FSbuoyancy.cs b/Firespitter/water/FSbuoyancy.cs index 3a778b34..3bbd0936 100644 --- a/Firespitter/water/FSbuoyancy.cs +++ b/Firespitter/water/FSbuoyancy.cs @@ -98,7 +98,7 @@ public void FixedUpdate() if (vessel.verticalSpeed < maxVerticalSpeed) // || relativeDirection < 0f) // if you are going down, apply force regardless, of going up, limit up speed { - this.part.GetComponent().AddForceAtPosition(uplift, forcePoint.position); + this.part.AddForceAtPosition(uplift, forcePoint.position); } } diff --git a/Firespitter/water/FSrudder.cs b/Firespitter/water/FSrudder.cs index 149b7476..e8f4766b 100644 --- a/Firespitter/water/FSrudder.cs +++ b/Firespitter/water/FSrudder.cs @@ -189,7 +189,7 @@ public void FixedUpdate() transformDirection = -transform.forward; break; } - this.GetComponent().AddForceAtPosition(transformDirection * forcetoAdd, base.transform.position); + this.part.AddForceAtPosition(transformDirection * forcetoAdd, base.transform.position); if (rudderTransform != null) {