From 1d720c790deca41bea2a98a8f42d68adcc622c52 Mon Sep 17 00:00:00 2001 From: Lorenzo Torres Date: Sun, 23 Mar 2025 19:38:34 +0100 Subject: make the ecs subsystem be a separate module --- src/ecs/ecs.zig | 6 ++++++ src/main.zig | 20 +++++++++----------- src/rendering/gltf.zig | 3 +++ 3 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 src/ecs/ecs.zig create mode 100644 src/rendering/gltf.zig (limited to 'src') diff --git a/src/ecs/ecs.zig b/src/ecs/ecs.zig new file mode 100644 index 0000000..278915b --- /dev/null +++ b/src/ecs/ecs.zig @@ -0,0 +1,6 @@ +pub const components = @import("components.zig"); +const entities = @import("entities.zig"); + +pub const Pool = entities.Pool; +pub const System = *const fn (*Pool) void; +pub const SystemGroup = []const System; diff --git a/src/main.zig b/src/main.zig index e8ff1d1..fce7776 100644 --- a/src/main.zig +++ b/src/main.zig @@ -6,14 +6,12 @@ const config = @import("config"); const Renderer = @import("rendering/renderer_vulkan.zig"); const math = @import("math.zig"); const mods = @import("mods"); +const ecs = @import("ecs"); -const components = @import("ecs/components.zig"); -const entities = @import("ecs/entities.zig"); - -fn testSystem2(pool: *entities.Pool) void { - for (pool.getQuery(components.Position), 0..) |position, i| { - const entity = pool.getEntity(i, components.Position); - if (pool.getComponent(entity, components.Speed)) |speed| { +fn testSystem2(pool: *ecs.Pool) void { + for (pool.getQuery(ecs.components.Position), 0..) |position, i| { + const entity = pool.getEntity(i, ecs.components.Position); + if (pool.getComponent(entity, ecs.components.Speed)) |speed| { std.debug.print("entity{d}: {any},{any},{any} {any}\n", .{ i, position.x, position.y, position.z, speed.speed }); } } @@ -46,20 +44,20 @@ pub fn main() !void { const w = try window.Window.create(800, 600, "sideros"); defer w.destroy(); - var pool = try entities.Pool.init(allocator); + var pool = try ecs.Pool.init(allocator); defer pool.deinit(allocator); //try pool.addSystemGroup(&[_]entities.System{ // testSystem, //}); - try pool.addSystemGroup(&[_]entities.System{ + try pool.addSystemGroup(&[_]ecs.System{ testSystem2, }); for (0..1000) |_| { const entity = try pool.createEntity(); - try pool.addComponent(entity, components.Position{ .x = 1.0, .y = 0.5, .z = 3.0 }); - try pool.addComponent(entity, components.Speed{ .speed = 5.0 }); + try pool.addComponent(entity, ecs.components.Position{ .x = 1.0, .y = 0.5, .z = 3.0 }); + try pool.addComponent(entity, ecs.components.Speed{ .speed = 5.0 }); } // TODO(luccie-cmd): Renderer.create shouldn't return an error diff --git a/src/rendering/gltf.zig b/src/rendering/gltf.zig new file mode 100644 index 0000000..2abeec1 --- /dev/null +++ b/src/rendering/gltf.zig @@ -0,0 +1,3 @@ +const std = @import("std"); +const mesh = @import("mesh.zig"); +const Allocator = std.mem.Allocator; -- cgit v1.2.3