Removed ecs dependency from rendering

This commit is contained in:
Lorenzo Torres 2025-08-10 20:35:04 +02:00
parent 4d5da504fb
commit a15e0c06ca
6 changed files with 108 additions and 80 deletions

54
src/systems.zig Normal file
View file

@ -0,0 +1,54 @@
const ecs = @import("ecs");
const math = @import("math");
const std = @import("std");
pub fn render(pool: *ecs.Pool) anyerror!void {
var renderer = pool.resources.renderer;
const camera = pool.resources.camera;
const now = try std.time.Instant.now();
const delta_time: f32 = @as(f32, @floatFromInt(now.since(renderer.previous_time))) / @as(f32, 1_000_000_000.0);
pool.resources.delta_time = delta_time;
renderer.previous_time = now;
renderer.setCamera(camera);
const transform_memory = renderer.graphics_pipeline.transform_buffer.mapped_memory;
try renderer.begin();
renderer.setLightCount(2);
for (renderer.transforms.items, 0..) |transform, i| {
transform_memory[i] = transform;
renderer.setTransform(@intCast(i));
renderer.device.draw(renderer.mesh.index_count, renderer.current_frame, renderer.mesh);
}
try renderer.end();
}
pub fn moveCamera(pool: *ecs.Pool) !void {
const input = pool.resources.input;
var camera = pool.resources.camera;
const mul = @as(@Vector(3, f32), @splat(camera.speed * pool.resources.delta_time));
if (input.isKeyDown(.w)) {
camera.position += camera.target * mul;
}
if (input.isKeyDown(.s)) {
camera.position -= camera.target * mul;
}
if (input.isKeyDown(.a)) {
camera.position -= math.normalize(math.cross(camera.target, camera.up)) * mul;
}
if (input.isKeyDown(.d)) {
camera.position += math.normalize(math.cross(camera.target, camera.up)) * mul;
}
if (input.isKeyDown(.space)) {
camera.position += camera.up * mul;
}
if (input.isKeyDown(.left_shift)) {
camera.position -= camera.up * mul;
}
}