summaryrefslogtreecommitdiff
path: root/2d/rigidbody/rigidbody_1/snippet2.cpp
diff options
context:
space:
mode:
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 };
+ }
+};