summaryrefslogtreecommitdiff
path: root/2d/rigidbody/rigidbody_1/snippet2.cpp
diff options
context:
space:
mode:
authorMatthew Kosarek <mattkae@protonmail.com>2021-06-17 21:32:57 -0400
committerMatthew Kosarek <mattkae@protonmail.com>2021-06-17 21:32:57 -0400
commit2ab6b6cfe81505b029f2da397cef0bb58989444f (patch)
tree41c581c80310c060dcbdcb049ce88970ca418d72 /2d/rigidbody/rigidbody_1/snippet2.cpp
parent8748228bc9effa4779f4c1062f5fbc07f1d07a60 (diff)
(mkosarek) Beginning to explain rigidbody physics in a reasonable way
Diffstat (limited to '2d/rigidbody/rigidbody_1/snippet2.cpp')
-rw-r--r--2d/rigidbody/rigidbody_1/snippet2.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/2d/rigidbody/rigidbody_1/snippet2.cpp b/2d/rigidbody/rigidbody_1/snippet2.cpp
new file mode 100644
index 0000000..8ad468c
--- /dev/null
+++ b/2d/rigidbody/rigidbody_1/snippet2.cpp
@@ -0,0 +1,25 @@
+
+
+struct Rigidbody {
+ Vector2 force = { 0, 0 };
+ Vector2 velocity = { 0, 0 };
+ Vector2 position = { 0, 0 };
+ float32 mass = 1.f;
+
+ void applyForce(Vector2 f) {
+ force += f;
+ }
+
+ void applyGravity(float32 deltaTimeSeconds) {
+ velocity += (Vector2 { 0.f, -50.f } * deltaTimeSeconds);
+ }
+
+ void update(float32 deltaTimeSeconds) {
+ applyGravity(deltaTimeSeconds);
+
+ Vector2 acceleration = force / mass;
+ velocity += (acceleration * deltaTimeSeconds);
+ position += (velocity * deltaTimeSeconds);
+ force = Vector2 { 0.f, 0.f };
+ }
+};