NYXA/README.md

126 lines
2.4 KiB
Markdown
Raw Normal View History

2026-07-10 22:27:43 +01:00
**Includes**
- Plugins
- Scheduler
- Resources
- Events
- ECS (Archetype)
**Plugin**
``` zig
pub const plugin: App.plugin.Plugin = .{
.name = "Renderer",
.description = "Vulkan Renderer",
.build = build,
};
```
**System**
``` zig
pub fn render(ctx: App.scheduler.Context) !void {
// --- GET RESOURCES ---
const res = try ctx.app.resources.getMany(struct {
window: *Window,
device: *Device,
render_frame: ?*RenderFrame,
});
if (res.render_frame) |rf| {
_ = rf;
}
}
```
**Simple Events**
``` zig
// --- SEND MANY EVENTS ---
try app.events.sendMany(&.{
event.AppExit{
.reason = "Yes",
},
});
// --- MAIN GAME LOOP ---
while (true) {
// --- USE AND EAT EVENT ---
if (app.events.consume(event.AppExit)) |app_exit| {
std.debug.print("Exit Reason: {s}\n", .{
app_exit.reason,
});
break;
}
}
```
**Event Queue**
``` zig
const Register = struct {
username: []const u8,
};
// --- QUEUE ---
if (app.events.get(event.Register)) |queue| {
// --- GET EVERY EVENT ---
for (queue.items()) |register| {
// --- DEBUG ---
std.debug.print("New Register: Username(s)\n", .{
register.username
});
// ...
}
// --- CLEAR EVENT QUEUE ---
queue.clear();
}
```
2026-07-10 22:27:43 +01:00
**Simple**
``` zig
test "Main" {
// --- APP ---
var app: Self = .init(std.testing.allocator);
defer app.deinit();
{ // PLUGINS
// --- ADD PLUGINS ---
try app.plugins.addMany(&.{
example.simple.plugin,
});
// --- BUILD PLUGINS ---
try app.plugins.build(.{
.app = &app,
});
}
{ // SYSTEMS
try app.schedules.runMany(&.{
example.simple.stage.Init,
example.simple.stage.Inputs,
example.simple.stage.Update,
example.simple.stage.Draw,
example.simple.stage.Deinit,
}, .{
.app = &app,
});
}
}
```
**Default App Stages**
``` zig
pub const stage = struct {
// --- LIFETIME ---
2026-07-10 22:27:43 +01:00
pub const init = struct {};
pub const deinit = struct {};
// --- FRAME ---
pub const begin_frame = struct {};
pub const end_frame = struct {};
// --- Core ---
2026-07-10 22:27:43 +01:00
pub const inputs = struct {};
pub const fixed_update = struct {};
pub const update = struct {};
pub const draw = struct {};
};
```