aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
authorNic Gaffney <gaffney_nic@protonmail.com>2024-06-12 21:15:52 -0500
committerNic Gaffney <gaffney_nic@protonmail.com>2024-06-12 21:15:52 -0500
commit963fae202108acd0498349e872e4811fa6c6aba0 (patch)
tree1a7d5b6ee837700819d8f6f5a2484342a0ab6ec1 /src/main.zig
parent6084001df845815efd9c0eb712acf4fd9311ce36 (diff)
downloadparticle-sim-963fae202108acd0498349e872e4811fa6c6aba0.tar.gz
Added imgui for configuration
Diffstat (limited to 'src/main.zig')
-rw-r--r--src/main.zig34
1 files changed, 25 insertions, 9 deletions
diff --git a/src/main.zig b/src/main.zig
index 47906e2..7d859fc 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -1,33 +1,49 @@
const std = @import("std");
const rl = @import("raylib");
+const z = @import("zgui");
const part = @import("particle.zig");
const cfg = @import("config.zig");
+const img = @import("imgui.zig");
+
+const c = @cImport({
+ @cDefine("NO_FONT_AWESOME", "1");
+ @cInclude("rlImGui.h");
+});
pub fn main() !void {
- const rules = part.ruleMatrix();
- part.printRules(rules);
+ cfg.rules = part.ruleMatrix();
+ part.printRules(cfg.rules);
+
+ var gpa = std.heap.GeneralPurposeAllocator(.{}){};
+ defer _ = gpa.deinit();
rl.initWindow(cfg.screenWidth, cfg.screenHeight, "Particle Simulator");
defer rl.closeWindow();
rl.setTargetFPS(60);
- var gpa = std.heap.GeneralPurposeAllocator(.{}){};
- defer _ = gpa.deinit();
+ c.rlImGuiSetup(true);
+ defer c.rlImGuiShutdown();
+
+ z.initNoContext(gpa.allocator());
+ defer z.deinitNoContext();
+ const imgui_width: f32 = cfg.screenWidth / 2;
+ const imgui_height: f32 = cfg.screenHeight / 3;
+ z.setNextWindowPos(.{ .x = 0, .y = 0 });
+ z.setNextWindowSize(.{ .w = imgui_width, .h = imgui_height });
var particles = try part.initParticles(gpa.allocator(), cfg.initialParticles);
defer particles.deinit(gpa.allocator());
while (!rl.windowShouldClose()) {
rl.beginDrawing();
- if (rl.isKeyPressed(rl.KeyboardKey.key_q)) break;
-
defer rl.endDrawing();
+ if (rl.isKeyPressed(rl.KeyboardKey.key_q)) break;
+ rl.clearBackground(rl.Color.black);
- part.updateVelocities(particles, rules);
+ part.updateVelocities(particles, cfg.rules);
part.updatePosition(particles);
part.draw(particles);
-
- rl.clearBackground(rl.Color.black);
+ try img.update();
}
}