diff options
| author | victorfisac <victorfisac@gmail.com> | 2018-03-10 19:25:17 +0100 |
|---|---|---|
| committer | victorfisac <victorfisac@gmail.com> | 2018-03-10 19:25:17 +0100 |
| commit | 3201bad65a8584c2fa587ff4e0df2c0c310d66c3 (patch) | |
| tree | 415e43fc61fb7112636a8009da14104b28e80f5e /examples | |
| parent | 8f1d6f38506ff6449866913c6d88b0f25ca2d8f4 (diff) | |
| download | raylib-3201bad65a8584c2fa587ff4e0df2c0c310d66c3.tar.gz raylib-3201bad65a8584c2fa587ff4e0df2c0c310d66c3.zip | |
Fixed memory leaks in physics step operations
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/physac/physics_demo.c | 13 | ||||
| -rw-r--r-- | examples/physac/physics_shatter.c | 12 |
2 files changed, 19 insertions, 6 deletions
diff --git a/examples/physac/physics_demo.c b/examples/physac/physics_demo.c index 1b54d51b..220c5672 100644 --- a/examples/physac/physics_demo.c +++ b/examples/physac/physics_demo.c @@ -32,6 +32,7 @@ int main() // Physac logo drawing position int logoX = screenWidth - MeasureText("Physac", 30) - 10; int logoY = 15; + bool needsReset = false; // Initialize physics and default physics bodies InitPhysics(); @@ -52,10 +53,9 @@ int main() { // Update //---------------------------------------------------------------------------------- - if (IsKeyPressed('R')) // Reset physics input + // Delay initialization of variables due to physics reset async + if (needsReset) { - ResetPhysics(); - floor = CreatePhysicsBodyRectangle((Vector2){ screenWidth/2, screenHeight }, 500, 100, 10); floor->enabled = false; @@ -63,6 +63,13 @@ int main() circle->enabled = false; } + // Reset physics input + if (IsKeyPressed('R')) + { + ResetPhysics(); + needsReset = true; + } + // Physics body creation inputs if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) CreatePhysicsBodyPolygon(GetMousePosition(), GetRandomValue(20, 80), GetRandomValue(3, 8), 10); else if (IsMouseButtonPressed(MOUSE_RIGHT_BUTTON)) CreatePhysicsBodyCircle(GetMousePosition(), GetRandomValue(10, 45), 10); diff --git a/examples/physac/physics_shatter.c b/examples/physac/physics_shatter.c index 6b474cd3..f4291cac 100644 --- a/examples/physac/physics_shatter.c +++ b/examples/physac/physics_shatter.c @@ -32,6 +32,7 @@ int main() // Physac logo drawing position int logoX = screenWidth - MeasureText("Physac", 30) - 10; int logoY = 15; + bool needsReset = false; // Initialize physics and default physics bodies InitPhysics(); @@ -48,14 +49,19 @@ int main() { // Update //---------------------------------------------------------------------------------- - if (IsKeyPressed('R')) // Reset physics input + // Delay initialization of variables due to physics reset asynchronous + if (needsReset) { - ResetPhysics(); - // Create random polygon physics body to shatter body = CreatePhysicsBodyPolygon((Vector2){ screenWidth/2, screenHeight/2 }, GetRandomValue(80, 200), GetRandomValue(3, 8), 10); } + if (IsKeyPressed('R')) // Reset physics input + { + ResetPhysics(); + needsReset = true; + } + if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) // Physics shatter input { // Note: some values need to be stored in variables due to asynchronous changes during main thread |
