From 8f3795f1bebcdf64e08cf1f48808ddc73cccbce6 Mon Sep 17 00:00:00 2001 From: Seth Long Date: Thu, 5 Nov 2026 11:25:08 -0800 Subject: [PATCH] Adjusted get_random in exploding target to support variable RAND_MAX, reordered projectile collision to avoid vector out of range errors, and disabled sleep in movement for Windows --- explodingtarget.h | 2 +- main.cpp | 3 ++- projectile.h | 7 ++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/explodingtarget.h b/explodingtarget.h index ad8a566..b36601d 100644 --- a/explodingtarget.h +++ b/explodingtarget.h @@ -4,7 +4,7 @@ class ExplodingTarget : public FloorPanel { public: float get_random(){ - return ((rand() % 2000000) - 1000000.0f) / 500000.0f; + return 3.0 * (1.0f - 2.0f * (float)rand() / (float)RAND_MAX); } void report_collision(GameObject *other, size_t other_instance, size_t our_instance) override { diff --git a/main.cpp b/main.cpp index bd5c12c..05d515f 100644 --- a/main.cpp +++ b/main.cpp @@ -234,7 +234,8 @@ void movement_function() { double sleep_seconds = 0.001 - (end_time - start_time); unsigned long sleep_microseconds = sleep_seconds * 1000000.0; - this_thread::sleep_for(chrono::microseconds(sleep_microseconds)); +// Windows can sleep for a minimum of about 15ms by this method, it seems +// this_thread::sleep_for(chrono::microseconds(sleep_microseconds)); } } diff --git a/projectile.h b/projectile.h index 907c662..3417400 100644 --- a/projectile.h +++ b/projectile.h @@ -12,11 +12,11 @@ public: moving = true; }; void add_location_size(vec3 start, vec3 vel){ - models.push_back(translate(mat4(1.0), start)); - models[models.size() - 1] = scale(models[models.size() - 1], vec3(proj_size, proj_size, proj_size)); velocities.push_back(vel * 0.1f); times_to_live.push_back(2000); specials.push_back(0); + models.push_back(translate(mat4(1.0), start)); + models[models.size() - 1] = scale(models[models.size() - 1], vec3(proj_size, proj_size, proj_size)); } void add_location_size(){ /* Defaults to "launched by player" */ @@ -28,13 +28,14 @@ public: } void movement(float time) { for(size_t i = 0; i < models.size(); i++) { - models[i] = translate(models[i], velocities[i]); + models[i] = translate(models[i], velocities[i] * time); times_to_live[i] -= time; if(times_to_live[i] < 0){ models.erase(models.begin() + i); velocities.erase(velocities.begin() + i); times_to_live.erase(times_to_live.begin() + i); specials.erase(specials.begin() + i); + i--; } } } -- 2.47.3