Fixes on the super janky collision
This commit is contained in:
parent
b817940716
commit
e746462295
5 changed files with 871 additions and 870 deletions
1726
LastSession.t4jlog
1726
LastSession.t4jlog
File diff suppressed because it is too large
Load diff
|
|
@ -120,8 +120,9 @@ public class LegacyPhysicsController implements IPhysicsController {
|
||||||
NextPosition.add(localVelocityStep);
|
NextPosition.add(localVelocityStep);
|
||||||
|
|
||||||
boolean ValidMovement = true;
|
boolean ValidMovement = true;
|
||||||
Drag = CalculateDrag(TerminalVelocitiesMS, DragCoefficients,CrossSectionAreas, actor.GetScale());
|
Vector3f scale = new Vector3f(1,1,1);
|
||||||
FallingAcceleration = CalculateFallSpeed(MassKG, Drag, actor.GetScale());
|
Drag = CalculateDrag(TerminalVelocitiesMS, DragCoefficients,CrossSectionAreas, scale);
|
||||||
|
FallingAcceleration = CalculateFallSpeed(MassKG, Drag, scale);
|
||||||
|
|
||||||
Velocities.y -= (FallingAcceleration / (TargetFrameRate * 2f)) * DeltaTime;
|
Velocities.y -= (FallingAcceleration / (TargetFrameRate * 2f)) * DeltaTime;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ public class RigidBody {
|
||||||
public Vector3f CrossSectionAreas = new Vector3f(1.8f * 0.9f, 0.6f * 0.9f, 1.8f * 0.6f);
|
public Vector3f CrossSectionAreas = new Vector3f(1.8f * 0.9f, 0.6f * 0.9f, 1.8f * 0.6f);
|
||||||
public Vector3f WeightDistribution = new Vector3f(2.0f,5.0f,7.0f);
|
public Vector3f WeightDistribution = new Vector3f(2.0f,5.0f,7.0f);
|
||||||
public float FallingAcceleration = 0.0f;
|
public float FallingAcceleration = 0.0f;
|
||||||
public float Bounciness = 0.3f;
|
public float Bounciness = 2f;
|
||||||
|
|
||||||
public final Vector3f LinearVelocity = new Vector3f();
|
public final Vector3f LinearVelocity = new Vector3f();
|
||||||
public final Vector3f AngularVelocity = new Vector3f();
|
public final Vector3f AngularVelocity = new Vector3f();
|
||||||
|
|
|
||||||
|
|
@ -43,9 +43,9 @@ public class RigidCollision {
|
||||||
float j = -(1 + Restitution) * VelocityAlongNormal / InverseMassSum;
|
float j = -(1 + Restitution) * VelocityAlongNormal / InverseMassSum;
|
||||||
Impulse.set(normal).mul(j);
|
Impulse.set(normal).mul(j);
|
||||||
|
|
||||||
body1.ApplyImpulse(NegatedImpulse.set(Impulse).negate(), Point);
|
body1.ApplyImpulse(NegatedImpulse.set(Impulse).negate().mul(body1.Bounciness), Point);
|
||||||
|
|
||||||
body2.ApplyImpulse(Impulse,Point);
|
body2.ApplyImpulse(Impulse.mul(body2.Bounciness),Point);
|
||||||
|
|
||||||
ApplyFriction(body1, body2, normal, Point, Dist1, Dist2, j);
|
ApplyFriction(body1, body2, normal, Point, Dist1, Dist2, j);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,13 +31,13 @@ public class T4Math {
|
||||||
|
|
||||||
public static class Physics{
|
public static class Physics{
|
||||||
public static Vector3f CalculateDragCoefficients(Vector3f TerminalVelocitiesMS, float MassKG, Vector3f CrossSectionAreas, Vector3f Scale){
|
public static Vector3f CalculateDragCoefficients(Vector3f TerminalVelocitiesMS, float MassKG, Vector3f CrossSectionAreas, Vector3f Scale){
|
||||||
return (CalculateDragFromTerminalVelocities(TerminalVelocitiesMS,MassKG *Math.abs((Scale.x + Scale.y + Scale.z)/3),new Vector3f(CrossSectionAreas)));
|
return (CalculateDragFromTerminalVelocities(TerminalVelocitiesMS,MassKG * 2,new Vector3f(CrossSectionAreas)));
|
||||||
}
|
}
|
||||||
public static Vector3f CalculateDrag(Vector3f Velocities, Vector3f DragCoefficients, Vector3f CrossSectionAreas, Vector3f Scale){
|
public static Vector3f CalculateDrag(Vector3f Velocities, Vector3f DragCoefficients, Vector3f CrossSectionAreas, Vector3f Scale){
|
||||||
return (CalculateRealDrag(Velocities,DragCoefficients,new Vector3f(CrossSectionAreas)));
|
return (CalculateRealDrag(Velocities,DragCoefficients,new Vector3f(CrossSectionAreas)));
|
||||||
}
|
}
|
||||||
public static float CalculateFallSpeed(float MassKG, Vector3f Drag, Vector3f Scale){
|
public static float CalculateFallSpeed(float MassKG, Vector3f Drag, Vector3f Scale){
|
||||||
return CalculateGravityForce(MassKG *Math.abs((Scale.x + Scale.y + Scale.z)/3), Drag);
|
return CalculateGravityForce(MassKG * 2, Drag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Vector3f CalculateRealDrag(Vector3f Velocity, Vector3f DragCoefficients, Vector3f CrossSectionAreas){
|
public static Vector3f CalculateRealDrag(Vector3f Velocity, Vector3f DragCoefficients, Vector3f CrossSectionAreas){
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue