From 41d076914f571dc4e112d06333d8e2ce8155717e Mon Sep 17 00:00:00 2001 From: catAngent Date: Mon, 9 Sep 2024 21:07:10 +0100 Subject: [PATCH] move away from bindings, now using native build.zig --- build.zig | 10 ++++---- build.zig.zon | 6 ++++- src/main.zig | 47 ++++++++++++++++---------------------- src/util/raylib_helper.zig | 4 ++++ src/world/chunk.zig | 5 ++-- 5 files changed, 37 insertions(+), 35 deletions(-) create mode 100644 src/util/raylib_helper.zig diff --git a/build.zig b/build.zig index 7ab7f10..72988cc 100644 --- a/build.zig +++ b/build.zig @@ -1,5 +1,4 @@ const std = @import("std"); -const raySdk = @import("raylib/src/build.zig"); pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); @@ -12,9 +11,12 @@ pub fn build(b: *std.Build) void { .optimize = optimize, }); - const raylib = raySdk.addRaylib(b, target, optimize, .{}); - exe.addIncludePath(.{ .path = "raylib/src" }); - exe.linkLibrary(raylib); + const rl = b.dependency("raylib", .{ + .target = target, + .optimize = optimize, + }); + + exe.linkLibrary(rl.artifact("raylib")); b.installArtifact(exe); diff --git a/build.zig.zon b/build.zig.zon index c9e26fe..94e11dd 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -3,7 +3,11 @@ .version = "0.0.0", - .dependencies = .{}, + .dependencies = .{ + .raylib = .{ + .path = "raylib", + }, + }, .paths = .{ "build.zig", diff --git a/src/main.zig b/src/main.zig index 4ee0db0..8ec0308 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,7 +1,6 @@ const std = @import("std"); -const raylib = @cImport({ - @cInclude("raylib.h"); -}); +const rh = @import("util/raylib_helper.zig"); +const raylib = rh.raylib; const chunks = @import("world/chunk.zig"); pub fn drawCameraPosition(camera: raylib.Camera3D, x: i32, y: i32) !void { @@ -16,18 +15,9 @@ pub fn drawCameraPosition(camera: raylib.Camera3D, x: i32, y: i32) !void { raylib.DrawText(slice, x, y, 20, raylib.YELLOW); } -pub fn moveCamera(camera: *raylib.Camera3D, x: f32, y: f32, z: f32) void { - camera.position.x += x; - camera.target.x += x; - camera.position.y += y; - camera.target.y += y; - camera.position.z += z; - camera.target.z += z; -} - -pub fn moveCameraVec(camera: *raylib.Camera3D, vec: raylib.Vector3) void { - camera.position = camera.position.add(vec); - camera.target = camera.target.add(vec); +pub fn moveCamera(camera: *raylib.Camera3D, vec: raylib.Vector3) void { + camera.position = raylib.Vector3Add(camera.position, vec); + camera.target = raylib.Vector3Add(camera.target, vec); } pub fn main() !void { @@ -38,7 +28,7 @@ pub fn main() !void { if (status == .leak) std.debug.print("MEMORY LEAK DETECTED!!!!!!!!!!!!!!!!!!!!!!\n", .{}) else std.debug.print("no leaks detected.\n", .{}); } - raylib.SetConfigFlags(raylib.ConfigFlags{ .FLAG_WINDOW_RESIZABLE = true }); + raylib.SetConfigFlags(raylib.FLAG_WINDOW_RESIZABLE); raylib.InitWindow(1024, 768, "voxel test"); defer raylib.CloseWindow(); @@ -51,7 +41,7 @@ pub fn main() !void { .up = raylib.Vector3{ .x = 0, .y = 1, .z = 0 }, .target = raylib.Vector3{ .x = 0, .y = 0, .z = -1 }, .fovy = 45, - .projection = raylib.CameraProjection.CAMERA_PERSPECTIVE, + .projection = raylib.CAMERA_PERSPECTIVE, }; var chunk = try chunks.Chunk.init(a7r); @@ -67,22 +57,25 @@ pub fn main() !void { while (!raylib.WindowShouldClose()) { raylib.ClearBackground(raylib.GRAY); - const right = raylib.Vector3CrossProduct(camera.up, raylib.Vector3Subtract(camera.target, camera.position)).normalize().neg(); + const right = raylib.Vector3Negate(raylib.Vector3Normalize(raylib.Vector3CrossProduct(camera.up, raylib.Vector3Subtract(camera.target, camera.position)))); const forward = raylib.Vector3CrossProduct(right, raylib.Vector3{ .x = 0, .y = -1, .z = 0 }); - const movement = @as(f32, if (raylib.IsKeyDown(raylib.KeyboardKey.KEY_LEFT_CONTROL)) 25 else 5) * raylib.GetFrameTime(); + const speed = @as(f32, if (raylib.IsKeyDown(raylib.KEY_LEFT_CONTROL)) 25 else 5) * raylib.GetFrameTime(); + var movement = raylib.Vector3Zero(); - if (raylib.IsKeyDown(raylib.KeyboardKey.KEY_SPACE)) moveCamera(&camera, 0, movement, 0); - if (raylib.IsKeyDown(raylib.KeyboardKey.KEY_LEFT_SHIFT)) moveCamera(&camera, 0, -movement, 0); + if (raylib.IsKeyDown(raylib.KEY_SPACE)) movement.y += 1; + if (raylib.IsKeyDown(raylib.KEY_LEFT_SHIFT)) movement.y -= 1; - if (raylib.IsKeyDown(raylib.KeyboardKey.KEY_W)) moveCameraVec(&camera, forward.scale(movement)); - if (raylib.IsKeyDown(raylib.KeyboardKey.KEY_S)) moveCameraVec(&camera, forward.scale(-movement)); - if (raylib.IsKeyDown(raylib.KeyboardKey.KEY_D)) moveCameraVec(&camera, right.scale(movement)); - if (raylib.IsKeyDown(raylib.KeyboardKey.KEY_A)) moveCameraVec(&camera, right.scale(-movement)); + if (raylib.IsKeyDown(raylib.KEY_W)) movement = raylib.Vector3Add(movement, forward); + if (raylib.IsKeyDown(raylib.KEY_S)) movement = raylib.Vector3Subtract(movement, forward); + if (raylib.IsKeyDown(raylib.KEY_D)) movement = raylib.Vector3Add(movement, right); + if (raylib.IsKeyDown(raylib.KEY_A)) movement = raylib.Vector3Subtract(movement, right); + + moveCamera(&camera, raylib.Vector3Scale(raylib.Vector3Normalize(movement), speed)); const delta = raylib.GetMouseDelta(); - camera.target = camera.position.add(raylib.Vector3RotateByAxisAngle(camera.target.sub(camera.position), raylib.Vector3{ .x = 0, .y = 1, .z = 0 }, -0.005 * delta.x)); - camera.target = camera.position.add(raylib.Vector3RotateByAxisAngle(camera.target.sub(camera.position), right, -0.005 * delta.y)); + camera.target = raylib.Vector3Add(camera.position, raylib.Vector3RotateByAxisAngle(raylib.Vector3Subtract(camera.target, camera.position), raylib.Vector3{ .x = 0, .y = 1, .z = 0 }, -0.005 * delta.x)); + camera.target = raylib.Vector3Add(camera.position, raylib.Vector3RotateByAxisAngle(raylib.Vector3Subtract(camera.target, camera.position), right, -0.005 * delta.y)); raylib.BeginDrawing(); defer raylib.EndDrawing(); diff --git a/src/util/raylib_helper.zig b/src/util/raylib_helper.zig new file mode 100644 index 0000000..38a9455 --- /dev/null +++ b/src/util/raylib_helper.zig @@ -0,0 +1,4 @@ +pub const raylib = @cImport({ + @cInclude("raylib.h"); + @cInclude("raymath.h"); +}); diff --git a/src/world/chunk.zig b/src/world/chunk.zig index 2cb6d5c..9f2f875 100644 --- a/src/world/chunk.zig +++ b/src/world/chunk.zig @@ -1,7 +1,6 @@ const std = @import("std"); -const raylib = @cImport({ - @cInclude("raylib.h"); -}); +const rh = @import("../util/raylib_helper.zig"); +const raylib = rh.raylib; const A7r = std.mem.Allocator; pub const Chunk = struct {