summaryrefslogtreecommitdiff
path: root/2d/rigidbody/rigidbody_1/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to '2d/rigidbody/rigidbody_1/main.cpp')
-rw-r--r--2d/rigidbody/rigidbody_1/main.cpp10
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 };
}