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/snippet2.cpp | |
parent | 8748228bc9effa4779f4c1062f5fbc07f1d07a60 (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.cpp | 25 |
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 }; + } +}; |