shorten vector ops
This commit is contained in:
parent
41d076914f
commit
06813e2e5f
2 changed files with 35 additions and 7 deletions
15
src/main.zig
15
src/main.zig
|
|
@ -1,6 +1,7 @@
|
|||
const std = @import("std");
|
||||
const rh = @import("util/raylib_helper.zig");
|
||||
const raylib = rh.raylib;
|
||||
const v3 = rh.v3;
|
||||
const chunks = @import("world/chunk.zig");
|
||||
|
||||
pub fn drawCameraPosition(camera: raylib.Camera3D, x: i32, y: i32) !void {
|
||||
|
|
@ -16,8 +17,8 @@ pub fn drawCameraPosition(camera: raylib.Camera3D, x: i32, y: i32) !void {
|
|||
}
|
||||
|
||||
pub fn moveCamera(camera: *raylib.Camera3D, vec: raylib.Vector3) void {
|
||||
camera.position = raylib.Vector3Add(camera.position, vec);
|
||||
camera.target = raylib.Vector3Add(camera.target, vec);
|
||||
camera.position = v3.add(camera.position, vec);
|
||||
camera.target = v3.add(camera.target, vec);
|
||||
}
|
||||
|
||||
pub fn main() !void {
|
||||
|
|
@ -57,8 +58,8 @@ pub fn main() !void {
|
|||
while (!raylib.WindowShouldClose()) {
|
||||
raylib.ClearBackground(raylib.GRAY);
|
||||
|
||||
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 right = v3.neg(v3.nor(v3.cross(camera.up, v3.sub(camera.target, camera.position))));
|
||||
const forward = v3.cross(right, v3.new(0, -1, 0));
|
||||
|
||||
const speed = @as(f32, if (raylib.IsKeyDown(raylib.KEY_LEFT_CONTROL)) 25 else 5) * raylib.GetFrameTime();
|
||||
var movement = raylib.Vector3Zero();
|
||||
|
|
@ -74,8 +75,8 @@ pub fn main() !void {
|
|||
moveCamera(&camera, raylib.Vector3Scale(raylib.Vector3Normalize(movement), speed));
|
||||
|
||||
const delta = raylib.GetMouseDelta();
|
||||
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));
|
||||
camera.target = v3.add(camera.position, v3.rotate(v3.sub(camera.target, camera.position), v3.new(0, 1, 0), -0.005 * delta.x));
|
||||
camera.target = v3.add(camera.position, v3.rotate(v3.sub(camera.target, camera.position), right, -0.005 * delta.y));
|
||||
|
||||
raylib.BeginDrawing();
|
||||
defer raylib.EndDrawing();
|
||||
|
|
@ -90,7 +91,7 @@ pub fn main() !void {
|
|||
while (y < 16) : (y += 1) {
|
||||
var z: f32 = 0;
|
||||
while (z < 16) : (z += 1) {
|
||||
raylib.DrawCube(raylib.Vector3{ .x = x + 48, .y = y, .z = z }, 1, 1, 1, raylib.RED);
|
||||
raylib.DrawCube(v3.new(x - 48, y, z), 1, 1, 1, raylib.RED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,3 +2,30 @@ pub const raylib = @cImport({
|
|||
@cInclude("raylib.h");
|
||||
@cInclude("raymath.h");
|
||||
});
|
||||
|
||||
pub const v3 = struct {
|
||||
pub inline fn new(x: f32, y: f32, z: f32) raylib.Vector3 {
|
||||
return raylib.Vector3{ .x = x, .y = y, .z = z };
|
||||
}
|
||||
pub inline fn add(a: raylib.Vector3, b: raylib.Vector3) raylib.Vector3 {
|
||||
return raylib.Vector3Add(a, b);
|
||||
}
|
||||
pub inline fn sub(a: raylib.Vector3, b: raylib.Vector3) raylib.Vector3 {
|
||||
return raylib.Vector3Subtract(a, b);
|
||||
}
|
||||
pub inline fn neg(a: raylib.Vector3) raylib.Vector3 {
|
||||
return raylib.Vector3Negate(a);
|
||||
}
|
||||
pub inline fn scl(a: raylib.Vector3, b: f32) raylib.Vector3 {
|
||||
return raylib.Vector3Scale(a, b);
|
||||
}
|
||||
pub inline fn nor(a: raylib.Vector3) raylib.Vector3 {
|
||||
return raylib.Vector3Normalize(a);
|
||||
}
|
||||
pub inline fn cross(a: raylib.Vector3, b: raylib.Vector3) raylib.Vector3 {
|
||||
return raylib.Vector3CrossProduct(a, b);
|
||||
}
|
||||
pub inline fn rotate(vec: raylib.Vector3, axis: raylib.Vector3, angle: f32) raylib.Vector3 {
|
||||
return raylib.Vector3RotateByAxisAngle(vec, axis, angle);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue