aboutsummaryrefslogtreecommitdiff
path: root/src/particle.zig
diff options
context:
space:
mode:
authorNic Gaffney <gaffney_nic@protonmail.com>2025-10-14 22:23:59 -0500
committerNic Gaffney <gaffney_nic@protonmail.com>2025-10-14 22:23:59 -0500
commitdd3ca084640f794c59427a507686bbd9bec1ed6b (patch)
tree4524af0c7a857a923387c07d58794de6d34a6b19 /src/particle.zig
parentec2527a65c9609dc6098b55312a8286e30f9ba46 (diff)
downloadparticle-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.zig11
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];