settle module state initialization

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2024-09-22 22:53:02 -07:00 committed by Emi Gutekanst
parent 0e12857154
commit 14ccd5a93c
3 changed files with 12 additions and 11 deletions

View file

@ -62,9 +62,10 @@ pub fn init(
const pipeline = core.device.createRenderPipeline(&pipeline_descriptor); const pipeline = core.device.createRenderPipeline(&pipeline_descriptor);
// Store our render pipeline in our module's state, so we can access it later on. // Store our render pipeline in our module's state, so we can access it later on.
// TODO(object): module-state-init app.* = .{
app.title_timer = try mach.time.Timer.start(); .title_timer = try mach.time.Timer.start(),
app.pipeline = pipeline; .pipeline = pipeline,
};
// TODO(object): window-title // TODO(object): window-title
// try updateWindowTitle(core); // try updateWindowTitle(core);

View file

@ -21,9 +21,12 @@ pub fn init(
app: *App, app: *App,
app_tick: mach.Call(App, .tick), app_tick: mach.Call(App, .tick),
app_deinit: mach.Call(App, .deinit), app_deinit: mach.Call(App, .deinit),
// app_caller: mach.Caller(App),
) !void { ) !void {
core.on_tick = app_tick.id; core.on_tick = app_tick.id;
core.on_exit = app_deinit.id; core.on_exit = app_deinit.id;
// core.on_tick = app_caller.tick;
// core.on_exit = app_caller.exit;
// Create our shader module // Create our shader module
const shader_module = core.device.createShaderModuleWGSL("shader.wgsl", @embedFile("shader.wgsl")); const shader_module = core.device.createShaderModuleWGSL("shader.wgsl", @embedFile("shader.wgsl"));
@ -58,9 +61,10 @@ pub fn init(
const pipeline = core.device.createRenderPipeline(&pipeline_descriptor); const pipeline = core.device.createRenderPipeline(&pipeline_descriptor);
// Store our render pipeline in our module's state, so we can access it later on. // Store our render pipeline in our module's state, so we can access it later on.
// TODO(object): module-state-init app.* = .{
app.title_timer = try mach.time.Timer.start(); .title_timer = try mach.time.Timer.start(),
app.pipeline = pipeline; .pipeline = pipeline,
};
// TODO(object): window-title // TODO(object): window-title
// try updateWindowTitle(core); // try updateWindowTitle(core);

View file

@ -57,8 +57,6 @@ windows: mach.Objects(struct {
fullscreen: bool, fullscreen: bool,
}), }),
global: mach.Object(struct {}),
/// Callback system invoked per tick (e.g. per-frame) /// Callback system invoked per tick (e.g. per-frame)
on_tick: ?mach.FunctionID = null, on_tick: ?mach.FunctionID = null,
@ -131,10 +129,8 @@ pub fn init(core: *Core) !void {
// TODO: remove undefined initialization (disgusting!) // TODO: remove undefined initialization (disgusting!)
const platform: Platform = undefined; const platform: Platform = undefined;
core.* = .{ core.* = .{
// TODO: this is a good example of why not *all* state fields should be allowed, must copy // Note: since core.windows is initialized for us already, we just copy the pointer.
// the ones mach initialized
.windows = core.windows, .windows = core.windows,
.global = core.global,
.allocator = allocator, .allocator = allocator,
.main_window = main_window, .main_window = main_window,