diff options
author | Matthew Kosarek <mattkae@protonmail.com> | 2021-06-17 21:32:57 -0400 |
---|---|---|
committer | Matthew Kosarek <mattkae@protonmail.com> | 2021-06-17 21:32:57 -0400 |
commit | 2ab6b6cfe81505b029f2da397cef0bb58989444f (patch) | |
tree | 41c581c80310c060dcbdcb049ce88970ca418d72 /2d/rigidbody/rigidbody_1/main.cpp | |
parent | 8748228bc9effa4779f4c1062f5fbc07f1d07a60 (diff) |
(mkosarek) Beginning to explain rigidbody physics in a reasonable way
Diffstat (limited to '2d/rigidbody/rigidbody_1/main.cpp')
-rw-r--r-- | 2d/rigidbody/rigidbody_1/main.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/2d/rigidbody/rigidbody_1/main.cpp b/2d/rigidbody/rigidbody_1/main.cpp index 8d4ab0e..321e3e5 100644 --- a/2d/rigidbody/rigidbody_1/main.cpp +++ b/2d/rigidbody/rigidbody_1/main.cpp @@ -11,6 +11,8 @@ #include <cmath> #include <cfloat> +const float32 MAX_VELOCITY = 200.f; + struct Rigidbody { Vector2 force = { 0, 0 }; Vector2 velocity = { 0, 0 }; @@ -35,6 +37,14 @@ struct Rigidbody { Vector2 acceleration = force / mass; velocity += (acceleration * deltaTimeSeconds); + + if (ABS(velocity.x) > MAX_VELOCITY) { + velocity.x = SIGN(velocity.x) * MAX_VELOCITY; + } + if (ABS(velocity.y) > MAX_VELOCITY) { + velocity.y = SIGN(velocity.y) * MAX_VELOCITY; + } + position += (velocity * deltaTimeSeconds); force = Vector2 { 0.f, 0.f }; } |