diff options
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 }; + } +}; |