From 19dd06e6650e938a7d38eeec22c4c5428f6b723a Mon Sep 17 00:00:00 2001 From: Grant Voelker Date: Fri, 24 May 2024 12:52:21 -0400 Subject: [PATCH] Speed and mass dependent stabilization. Mostly exists to nerf scooters. --- .../kotlin/org/valkyrienskies/eureka/ship/Stabilize.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/common/src/main/kotlin/org/valkyrienskies/eureka/ship/Stabilize.kt b/common/src/main/kotlin/org/valkyrienskies/eureka/ship/Stabilize.kt index eddd391c..89301929 100644 --- a/common/src/main/kotlin/org/valkyrienskies/eureka/ship/Stabilize.kt +++ b/common/src/main/kotlin/org/valkyrienskies/eureka/ship/Stabilize.kt @@ -6,6 +6,7 @@ import org.valkyrienskies.core.api.ships.PhysShip import org.valkyrienskies.core.impl.game.ships.PhysShipImpl import org.valkyrienskies.eureka.EurekaConfig import kotlin.math.atan +import kotlin.math.max fun stabilize( ship: PhysShipImpl, @@ -46,7 +47,12 @@ fun stabilize( ) ) - stabilizationTorque.mul(EurekaConfig.SERVER.stabilizationTorqueConstant) + val speed = ship.poseVel.vel.length() + + val multiplierA = 1000f; // 1 kilo + val multiplierB = 0.271828; // e / 10 + + stabilizationTorque.mul(EurekaConfig.SERVER.stabilizationTorqueConstant / max(1.0, speed * speed * multiplierA / ship.inertia.shipMass + speed * multiplierB)) forces.applyInvariantTorque(stabilizationTorque) if (linear) {