move away from bindings, now using native build.zig

This commit is contained in:
catAngent 2024-09-09 21:07:10 +01:00
parent 8de184ff38
commit 41d076914f
5 changed files with 37 additions and 35 deletions

View file

@ -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);

View file

@ -3,7 +3,11 @@
.version = "0.0.0",
.dependencies = .{},
.dependencies = .{
.raylib = .{
.path = "raylib",
},
},
.paths = .{
"build.zig",

View file

@ -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();

View file

@ -0,0 +1,4 @@
pub const raylib = @cImport({
@cInclude("raylib.h");
@cInclude("raymath.h");
});

View file

@ -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 {