aboutsummaryrefslogtreecommitdiff
path: root/src/main.zig
diff options
context:
space:
mode:
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();
}
}