aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNic Gaffney <gaffney_nic@protonmail.com>2024-06-12 21:35:43 -0500
committerNic Gaffney <gaffney_nic@protonmail.com>2024-06-12 21:35:43 -0500
commit849d278638769542a58b2b53f8c92f6045d135a0 (patch)
tree7879d776b6272324e0e9b8af96f498947ee1314b
parent4ef82b5d4ce1e7dc0f30672519310e81113e6fe7 (diff)
downloadparticle-sim-849d278638769542a58b2b53f8c92f6045d135a0.tar.gz
Particle amount now updates with slider
-rw-r--r--imgui.ini2
-rw-r--r--src/main.zig10
-rw-r--r--src/particle.zig2
3 files changed, 12 insertions, 2 deletions
diff --git a/imgui.ini b/imgui.ini
index 076d0b4..3ec33f2 100644
--- a/imgui.ini
+++ b/imgui.ini
@@ -6,5 +6,5 @@ Collapsed=0
[Window][Configuration]
Pos=-1,0
Size=1102,376
-Collapsed=0
+Collapsed=1
diff --git a/src/main.zig b/src/main.zig
index 7d859fc..02830e5 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -36,6 +36,16 @@ pub fn main() !void {
defer particles.deinit(gpa.allocator());
while (!rl.windowShouldClose()) {
+ if (particles.items(.x).len < cfg.particleCount) {
+ for (0..@intCast(cfg.particleCount - @as(i32, @intCast(particles.items(.x).len)))) |_| {
+ try particles.append(gpa.allocator(), part.createParticle());
+ }
+ }
+
+ if (particles.items(.x).len > cfg.particleCount) {
+ particles.shrinkRetainingCapacity(@intCast(cfg.particleCount));
+ }
+
rl.beginDrawing();
defer rl.endDrawing();
if (rl.isKeyPressed(rl.KeyboardKey.key_q)) break;
diff --git a/src/particle.zig b/src/particle.zig
index 05ffb7f..00eace7 100644
--- a/src/particle.zig
+++ b/src/particle.zig
@@ -124,7 +124,7 @@ fn force(distance: f32, attraction: f32) f32 {
return 0;
}
-fn createParticle() particle {
+pub fn createParticle() particle {
const seed = @as(u64, @truncate(@as(u128, @bitCast(std.time.nanoTimestamp()))));
var prng = std.rand.DefaultPrng.init(seed);
const x = prng.random().uintLessThan(u32, cfg.screenWidth);