Implemented keyboard input
This commit is contained in:
parent
4eed1778a6
commit
b6d50a781d
11 changed files with 179 additions and 59 deletions
|
|
@ -14,6 +14,10 @@ var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
|||
const allocator = gpa.allocator();
|
||||
var pool: ecs.Pool = undefined;
|
||||
var renderer: Renderer = undefined;
|
||||
var camera: rendering.Camera = .{
|
||||
.position = .{ 0.0, 0.0, 5.0 },
|
||||
};
|
||||
var input: ecs.Input = .{ .key_pressed = .{false} ** @intFromEnum(ecs.Input.KeyCode.menu) };
|
||||
var resources: ecs.Resources = undefined;
|
||||
|
||||
fn init_mods() void {
|
||||
|
|
@ -47,18 +51,15 @@ fn init_mods() void {
|
|||
|
||||
export fn sideros_init(init: api.GameInit) callconv(.c) void {
|
||||
resources = .{
|
||||
.camera = .{
|
||||
.position = .{ 0.0, 5.0, -5.0 },
|
||||
.target = .{ 0.0, 0.0, 0.0 },
|
||||
},
|
||||
.camera = &camera,
|
||||
.renderer = undefined,
|
||||
.input = .{ .key_pressed = .{false} ** @intFromEnum(ecs.Input.KeyCode.menu) },
|
||||
.input = &input,
|
||||
};
|
||||
|
||||
pool = ecs.Pool.init(allocator, &resources) catch @panic("TODO: Gracefully handle error");
|
||||
// TODO(ernesto): I think this @ptrCast are unavoidable but maybe not?
|
||||
renderer = Renderer.init(allocator, @ptrCast(init.instance), @ptrCast(init.surface)) catch @panic("TODO: Gracefully handle error");
|
||||
pool.addSystemGroup(&[_]ecs.System{Renderer.render}, true) catch @panic("TODO: Gracefuly handle error");
|
||||
pool.addSystemGroup(&[_]ecs.System{Renderer.render, rendering.Camera.moveCamera}, true) catch @panic("TODO: Gracefuly handle error");
|
||||
pool.resources.renderer = &renderer;
|
||||
pool.tick();
|
||||
init_mods();
|
||||
|
|
@ -74,3 +75,13 @@ export fn sideros_cleanup() callconv(.c) void {
|
|||
pool.deinit();
|
||||
if (gpa.deinit() != .ok) @panic("Memory leaked");
|
||||
}
|
||||
|
||||
export fn sideros_key_callback(key: u32, release: bool) callconv(.c) void {
|
||||
if (key <= @intFromEnum(ecs.Input.KeyCode.menu) and key >= @intFromEnum(ecs.Input.KeyCode.space)) {
|
||||
if (release) {
|
||||
input.key_pressed[key] = false;
|
||||
} else {
|
||||
input.key_pressed[key] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue