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 std = @import("std");
|
||||||
const rh = @import("util/raylib_helper.zig");
|
const rh = @import("util/raylib_helper.zig");
|
||||||
const raylib = rh.raylib;
|
const raylib = rh.raylib;
|
||||||
|
const v3 = rh.v3;
|
||||||
const chunks = @import("world/chunk.zig");
|
const chunks = @import("world/chunk.zig");
|
||||||
|
|
||||||
pub fn drawCameraPosition(camera: raylib.Camera3D, x: i32, y: i32) !void {
|
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 {
|
pub fn moveCamera(camera: *raylib.Camera3D, vec: raylib.Vector3) void {
|
||||||
camera.position = raylib.Vector3Add(camera.position, vec);
|
camera.position = v3.add(camera.position, vec);
|
||||||
camera.target = raylib.Vector3Add(camera.target, vec);
|
camera.target = v3.add(camera.target, vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() !void {
|
pub fn main() !void {
|
||||||
|
|
@ -57,8 +58,8 @@ pub fn main() !void {
|
||||||
while (!raylib.WindowShouldClose()) {
|
while (!raylib.WindowShouldClose()) {
|
||||||
raylib.ClearBackground(raylib.GRAY);
|
raylib.ClearBackground(raylib.GRAY);
|
||||||
|
|
||||||
const right = raylib.Vector3Negate(raylib.Vector3Normalize(raylib.Vector3CrossProduct(camera.up, raylib.Vector3Subtract(camera.target, camera.position))));
|
const right = v3.neg(v3.nor(v3.cross(camera.up, v3.sub(camera.target, camera.position))));
|
||||||
const forward = raylib.Vector3CrossProduct(right, raylib.Vector3{ .x = 0, .y = -1, .z = 0 });
|
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();
|
const speed = @as(f32, if (raylib.IsKeyDown(raylib.KEY_LEFT_CONTROL)) 25 else 5) * raylib.GetFrameTime();
|
||||||
var movement = raylib.Vector3Zero();
|
var movement = raylib.Vector3Zero();
|
||||||
|
|
@ -74,8 +75,8 @@ pub fn main() !void {
|
||||||
moveCamera(&camera, raylib.Vector3Scale(raylib.Vector3Normalize(movement), speed));
|
moveCamera(&camera, raylib.Vector3Scale(raylib.Vector3Normalize(movement), speed));
|
||||||
|
|
||||||
const delta = raylib.GetMouseDelta();
|
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 = v3.add(camera.position, v3.rotate(v3.sub(camera.target, camera.position), v3.new(0, 1, 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), right, -0.005 * delta.y));
|
||||||
|
|
||||||
raylib.BeginDrawing();
|
raylib.BeginDrawing();
|
||||||
defer raylib.EndDrawing();
|
defer raylib.EndDrawing();
|
||||||
|
|
@ -90,7 +91,7 @@ pub fn main() !void {
|
||||||
while (y < 16) : (y += 1) {
|
while (y < 16) : (y += 1) {
|
||||||
var z: f32 = 0;
|
var z: f32 = 0;
|
||||||
while (z < 16) : (z += 1) {
|
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("raylib.h");
|
||||||
@cInclude("raymath.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