diff --git a/examples/glyphs/Game.zig b/examples/glyphs/Game.zig index 76346e43..bc52caaa 100644 --- a/examples/glyphs/Game.zig +++ b/examples/glyphs/Game.zig @@ -60,12 +60,11 @@ fn init( core.setTitle("gfx.Sprite example"); // Tell sprite_mod to use the texture - engine.dispatchNoError(); // TODO: no dispatch in user code const texture = text_mod.state.texture; - sprite_mod.send(.init_pipeline, .{Sprite.PipelineOptions{ + sprite_mod.send(.init_pipeline, .{ .@"0" = Sprite.PipelineOptions{ .pipeline = @intFromEnum(Pipeline.text), .texture = texture, - }}); + } }); // We can create entities, and set components on them. Note that components live in a module // namespace, e.g. the `Sprite` module could have a 3D `.location` component with a different @@ -78,7 +77,7 @@ fn init( try sprite_mod.set(player, .size, vec2(@floatFromInt(r.width), @floatFromInt(r.height))); try sprite_mod.set(player, .uv_transform, Mat3x3.translate(vec2(@floatFromInt(r.x), @floatFromInt(r.y)))); try sprite_mod.set(player, .pipeline, @intFromEnum(Pipeline.text)); - sprite_mod.send(.updated, .{@intFromEnum(Pipeline.text)}); + sprite_mod.send(.updated, .{ .@"0" = @intFromEnum(Pipeline.text) }); game.state = .{ .timer = try mach.Timer.start(), @@ -193,14 +192,14 @@ fn tick( ); try sprite_mod.set(game.state.player, .transform, player_transform); - sprite_mod.send(.updated, .{@intFromEnum(Pipeline.text)}); + sprite_mod.send(.updated, .{ .@"0" = @intFromEnum(Pipeline.text) }); // Perform pre-render work - sprite_mod.send(.pre_render, .{@intFromEnum(Pipeline.text)}); + sprite_mod.send(.pre_render, .{ .@"0" = @intFromEnum(Pipeline.text) }); // Render a frame - engine.send(.begin_pass, .{gpu.Color{ .r = 1.0, .g = 1.0, .b = 1.0, .a = 1.0 }}); - sprite_mod.send(.render, .{@intFromEnum(Pipeline.text)}); + engine.send(.begin_pass, .{ .@"0" = gpu.Color{ .r = 1.0, .g = 1.0, .b = 1.0, .a = 1.0 } }); + sprite_mod.send(.render, .{ .@"0" = @intFromEnum(Pipeline.text) }); engine.send(.end_pass, .{}); engine.send(.present, .{}); // Present the frame diff --git a/examples/glyphs/Text.zig b/examples/glyphs/Text.zig index 95c3dcc8..0beffaf6 100644 --- a/examples/glyphs/Text.zig +++ b/examples/glyphs/Text.zig @@ -10,7 +10,7 @@ pub const Mod = mach.Mod(@This()); pub const events = .{ .{ .global = .deinit, .handler = deinit }, - .{ .local = .init, .handler = init }, + .{ .global = .init, .handler = init }, .{ .local = .prepare, .handler = prepare }, }; @@ -67,7 +67,7 @@ fn init( s.ft = try ft.Library.init(); s.face = try s.ft.createFaceMemory(assets.roboto_medium_ttf, 0); - text_mod.send(.prepare, .{&[_]u21{ '?', '!', 'a', 'b', '#', '@', '%', '$', '&', '^', '*', '+', '=', '<', '>', '/', ':', ';', 'Q', '~' }}); + text_mod.send(.prepare, .{ .@"0" = &[_]u21{ '?', '!', 'a', 'b', '#', '@', '%', '$', '&', '^', '*', '+', '=', '<', '>', '/', ':', ';', 'Q', '~' } }); } fn prepare( diff --git a/examples/sprite/Game.zig b/examples/sprite/Game.zig index edbaf318..bb8e1697 100644 --- a/examples/sprite/Game.zig +++ b/examples/sprite/Game.zig @@ -68,11 +68,11 @@ fn init( try sprite_mod.set(player, .uv_transform, Mat3x3.translate(vec2(0, 0))); try sprite_mod.set(player, .pipeline, @intFromEnum(Pipeline.default)); - sprite_mod.send(.init_pipeline, .{Sprite.PipelineOptions{ + sprite_mod.send(.init_pipeline, .{ .@"0" = Sprite.PipelineOptions{ .pipeline = @intFromEnum(Pipeline.default), .texture = try loadTexture(engine), - }}); - sprite_mod.send(.updated, .{@intFromEnum(Pipeline.default)}); + } }); + sprite_mod.send(.updated, .{ .@"0" = @intFromEnum(Pipeline.default) }); game.state = .{ .timer = try mach.Timer.start(), @@ -176,14 +176,14 @@ fn tick( player_pos.v[0] += direction.x() * speed * delta_time; player_pos.v[1] += direction.y() * speed * delta_time; try sprite_mod.set(game.state.player, .transform, Mat4x4.translate(player_pos)); - sprite_mod.send(.updated, .{@intFromEnum(Pipeline.default)}); + sprite_mod.send(.updated, .{ .@"0" = @intFromEnum(Pipeline.default) }); // Perform pre-render work - sprite_mod.send(.pre_render, .{@intFromEnum(Pipeline.default)}); + sprite_mod.send(.pre_render, .{ .@"0" = @intFromEnum(Pipeline.default) }); // Render a frame - engine.send(.begin_pass, .{gpu.Color{ .r = 1.0, .g = 1.0, .b = 1.0, .a = 1.0 }}); - sprite_mod.send(.render, .{@intFromEnum(Pipeline.default)}); + engine.send(.begin_pass, .{ .@"0" = gpu.Color{ .r = 1.0, .g = 1.0, .b = 1.0, .a = 1.0 } }); + sprite_mod.send(.render, .{ .@"0" = @intFromEnum(Pipeline.default) }); engine.send(.end_pass, .{}); engine.send(.present, .{}); // Present the frame diff --git a/examples/text/Game.zig b/examples/text/Game.zig index 818126f0..8069bc8a 100644 --- a/examples/text/Game.zig +++ b/examples/text/Game.zig @@ -108,9 +108,9 @@ fn init( try text_mod.set(player, .text, text1); try text_mod.set(player, .style, styles); - text_mod.send(.init_pipeline, .{Text.PipelineOptions{ + text_mod.send(.init_pipeline, .{ .@"0" = Text.PipelineOptions{ .pipeline = @intFromEnum(Pipeline.default), - }}); + } }); engine.dispatchNoError(); // TODO: no dispatch in user code game.state = .{ @@ -226,14 +226,14 @@ fn tick( player_pos.v[0] += direction.x() * speed * delta_time; player_pos.v[1] += direction.y() * speed * delta_time; try text_mod.set(game.state.player, .transform, Mat4x4.scaleScalar(upscale).mul(&Mat4x4.translate(player_pos))); - text_mod.send(.updated, .{@intFromEnum(Pipeline.default)}); + text_mod.send(.updated, .{ .@"0" = @intFromEnum(Pipeline.default) }); // Perform pre-render work - text_mod.send(.pre_render, .{@intFromEnum(Pipeline.default)}); + text_mod.send(.pre_render, .{ .@"0" = @intFromEnum(Pipeline.default) }); // Render a frame - engine.send(.begin_pass, .{gpu.Color{ .r = 1.0, .g = 1.0, .b = 1.0, .a = 1.0 }}); - text_mod.send(.render, .{@intFromEnum(Pipeline.default)}); + engine.send(.begin_pass, .{ .@"0" = gpu.Color{ .r = 1.0, .g = 1.0, .b = 1.0, .a = 1.0 } }); + text_mod.send(.render, .{ .@"0" = @intFromEnum(Pipeline.default) }); engine.send(.end_pass, .{}); engine.send(.present, .{}); // Present the frame diff --git a/src/ecs/systems.zig b/src/ecs/systems.zig index 92b056ba..55117237 100644 --- a/src/ecs/systems.zig +++ b/src/ecs/systems.zig @@ -74,7 +74,7 @@ pub fn World(comptime mods: anytype) type { world.modules.sendToModule(module_tag, event_name, args); } - pub inline fn sendGlobal(m: *@This(), comptime event_name: Modules.GlobalEvent, args: anytype) void { + pub inline fn sendGlobal(m: *@This(), comptime event_name: Modules.GlobalEvent, args: Modules.GlobalArgsM(M, event_name)) void { const mod_ptr: *Mods = @alignCast(@fieldParentPtr(Mods, @tagName(module_tag), m)); const world = @fieldParentPtr(WorldT, "mod", mod_ptr); world.modules.sendGlobal(module_tag, event_name, args);