summaryrefslogtreecommitdiff
path: root/2d/rigidbody/rigidbody_2/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to '2d/rigidbody/rigidbody_2/main.cpp')
-rw-r--r--2d/rigidbody/rigidbody_2/main.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/2d/rigidbody/rigidbody_2/main.cpp b/2d/rigidbody/rigidbody_2/main.cpp
index bad6949..123cf7e 100644
--- a/2d/rigidbody/rigidbody_2/main.cpp
+++ b/2d/rigidbody/rigidbody_2/main.cpp
@@ -63,13 +63,15 @@ struct Rigidbody {
float32 nextTimeAppliedSeconds = i.timeAppliedSeconds + deltaTimeSeconds;
if (nextTimeAppliedSeconds >= i.timeOfApplicationSeconds) {
- nextTimeAppliedSeconds = i.timeOfApplicationSeconds; // Do the remainder of the time
+ nextTimeAppliedSeconds = i.timeOfApplicationSeconds;
i.isDead = true;
}
float32 impulseDtSeconds = nextTimeAppliedSeconds - i.timeAppliedSeconds;
Vector2 forceToApply = i.force * (impulseDtSeconds / i.timeOfApplicationSeconds);
force += forceToApply * impulseDtSeconds;
+
+ // New! Increment the torque for each force
torque += i.pointOfApplication.getPerp().dot(forceToApply);
i.timeAppliedSeconds = nextTimeAppliedSeconds;
@@ -79,12 +81,11 @@ struct Rigidbody {
velocity += (acceleration * deltaTimeSeconds);
position += (velocity * deltaTimeSeconds);
- // New: Update the rotational velocity as well
+ // New! Update the rotational velocity as well
float32 rotationalAcceleration = torque / momentOfInertia;
rotationalVelocity += (rotationalAcceleration * deltaTimeSeconds);
rotation += (rotationalVelocity * deltaTimeSeconds);
- // Cleanup any impulses that have expired in the mean time
for (int32 idx = 0; idx < numImpulses; idx++) {
if (activeImpulses[idx].isDead) {
for (int j = idx + 1; j < numImpulses; j++) {