diff --git a/libs/ecs/src/main.zig b/libs/ecs/src/main.zig index e9efb826..b333d7e3 100644 --- a/libs/ecs/src/main.zig +++ b/libs/ecs/src/main.zig @@ -83,5 +83,5 @@ test "example" { try world.entities.setComponent(player2, .physics, .id, 1234); try world.entities.setComponent(player3, .physics, .id, 1234); - world.tick(); + world.send(.tick); } diff --git a/libs/ecs/src/systems.zig b/libs/ecs/src/systems.zig index 2fcc5ab2..41c2fb2f 100644 --- a/libs/ecs/src/systems.zig +++ b/libs/ecs/src/systems.zig @@ -268,13 +268,13 @@ pub fn World(comptime modules: anytype) type { ) = value; } - /// Tick sends the global 'tick' message to all modules that are subscribed to it. - pub fn tick(world: *Self) void { + /// Broadcasts a global message to all modules that are subscribed to it. + pub fn send(world: *Self, comptime msg_tag: anytype) void { _ = world; inline for (std.meta.fields(@TypeOf(modules))) |module_field| { const module = @field(modules, module_field.name); if (@hasField(@TypeOf(module), "messages")) { - if (@hasField(module.messages, "tick")) module.update(.tick); + if (@hasField(module.messages, @tagName(msg_tag))) module.update(msg_tag); } } } diff --git a/src/engine.zig b/src/engine.zig index a598c844..ac159a81 100644 --- a/src/engine.zig +++ b/src/engine.zig @@ -48,7 +48,7 @@ pub fn App( } pub fn update(app: *@This()) !bool { - app.engine.tick(); + app.engine.send(.tick); return false; } };