From 5157a675af0d4ff468d0116c6b762a562bebc0cc Mon Sep 17 00:00:00 2001 From: OLEGSHA Date: Mon, 4 Jan 2021 11:46:16 +0300 Subject: [PATCH] Hotfixed collision drag, still needs a lot of testing --- .../common/collision/colliders/Collider.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/windcorp/progressia/common/collision/colliders/Collider.java b/src/main/java/ru/windcorp/progressia/common/collision/colliders/Collider.java index 07c62c4..f6372ee 100644 --- a/src/main/java/ru/windcorp/progressia/common/collision/colliders/Collider.java +++ b/src/main/java/ru/windcorp/progressia/common/collision/colliders/Collider.java @@ -30,7 +30,7 @@ public class Collider { * Your faithful student,
* Kostyl. */ - private static final float TIME_STEP_COEFFICIENT_FOR_CURRENTLY_COLLIDING_BODIES = 1e-1f; + private static final float TIME_STEP_COEFFICIENT_FOR_CURRENTLY_COLLIDING_BODIES = 1f/*1e-1f*/; public static void performCollisions( List colls, @@ -291,6 +291,8 @@ public class Collider { collision.a.changeVelocityOnCollision(du_a); collision.b.changeVelocityOnCollision(du_b); + separate(collision, n, m_a, m_b); + // JGML is still to fuck Vectors.release(n); Vectors.release(v_a); @@ -301,6 +303,23 @@ public class Collider { Vectors.release(du_a); Vectors.release(du_b); } + + private static void separate( + Collision collision, + Vec3 normal, float aRelativeMass, float bRelativeMass + ) { + final float margin = 1e-4f; + + Vec3 displacement = Vectors.grab3(); + + displacement.set(normal).mul(margin).mul(bRelativeMass); + collision.a.moveAsCollideable(displacement); + + displacement.set(normal).mul(margin).mul(aRelativeMass).negate(); + collision.b.moveAsCollideable(displacement); + + Vectors.release(displacement); + } private static void advanceTime( Collection colls,