Hotfixed collision drag, still needs a lot of testing

This commit is contained in:
OLEGSHA 2021-01-04 11:46:16 +03:00
parent 17e0714913
commit 5157a675af

View File

@ -30,7 +30,7 @@ public class Collider {
* Your faithful student,<br /> * Your faithful student,<br />
* Kostyl. * 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( public static void performCollisions(
List<? extends Collideable> colls, List<? extends Collideable> colls,
@ -291,6 +291,8 @@ public class Collider {
collision.a.changeVelocityOnCollision(du_a); collision.a.changeVelocityOnCollision(du_a);
collision.b.changeVelocityOnCollision(du_b); collision.b.changeVelocityOnCollision(du_b);
separate(collision, n, m_a, m_b);
// JGML is still to fuck // JGML is still to fuck
Vectors.release(n); Vectors.release(n);
Vectors.release(v_a); Vectors.release(v_a);
@ -301,6 +303,23 @@ public class Collider {
Vectors.release(du_a); Vectors.release(du_a);
Vectors.release(du_b); 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( private static void advanceTime(
Collection<? extends Collideable> colls, Collection<? extends Collideable> colls,