Removed ecs dependency from rendering
This commit is contained in:
parent
4d5da504fb
commit
a15e0c06ca
6 changed files with 108 additions and 80 deletions
54
src/systems.zig
Normal file
54
src/systems.zig
Normal 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;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue