diff options
| author | Nic Gaffney <gaffney_nic@protonmail.com> | 2025-10-14 22:23:59 -0500 |
|---|---|---|
| committer | Nic Gaffney <gaffney_nic@protonmail.com> | 2025-10-14 22:23:59 -0500 |
| commit | dd3ca084640f794c59427a507686bbd9bec1ed6b (patch) | |
| tree | 4524af0c7a857a923387c07d58794de6d34a6b19 /src/particle.zig | |
| parent | ec2527a65c9609dc6098b55312a8286e30f9ba46 (diff) | |
| download | particle-sim-dd3ca084640f794c59427a507686bbd9bec1ed6b.tar.gz | |
Started work on emscripten, fixed single frame leak caused by infinite splits
Diffstat (limited to 'src/particle.zig')
| -rw-r--r-- | src/particle.zig | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/particle.zig b/src/particle.zig index 14748dc..03de9ae 100644 --- a/src/particle.zig +++ b/src/particle.zig @@ -1,3 +1,4 @@ +const builtin = @import("builtin"); const cfg = @import("config.zig"); const std = @import("std"); const rl = @import("raylib"); @@ -24,12 +25,18 @@ pub fn initParticles(allocator: std.mem.Allocator, amnt: u32) !std.array_list.Ma pub fn updateVelocities( particles: std.array_list.Managed(particle), qtree: quad.Quad(particle, cfg.quadSplitLimit), - threadidx: u64, + threadidx: usize, particlesInRange: *std.ArrayList(particle), ) !void { const rules = cfg.rules; var i = threadidx; - while (i < particles.items.len) : (i += cfg.numThreads) { + while (i < particles.items.len) : (i += iterval: { + if (builtin.target.os.tag == .emscripten) + break :iterval 1 + else + break :iterval cfg.numThreads; + }) { + var p: *particle = &(particles.items[i]); defer particlesInRange.clearRetainingCapacity(); const radius = cfg.radius[p.colorId]; |
