From 963fae202108acd0498349e872e4811fa6c6aba0 Mon Sep 17 00:00:00 2001 From: Nic Gaffney Date: Wed, 12 Jun 2024 21:15:52 -0500 Subject: Added imgui for configuration --- src/main.zig | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) (limited to 'src/main.zig') 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(); } } -- cgit v1.2.3