diff --git a/projects/sampleGame/main.zig b/projects/sampleGame/main.zig index dbbf1d6..03dfe8c 100644 --- a/projects/sampleGame/main.zig +++ b/projects/sampleGame/main.zig @@ -96,6 +96,50 @@ pub const FoxObject = struct { } }; +pub const DamagedHelmet = struct { + data: core.GameObjectData = undefined, + entity: core.Entity, + + var first: bool = true; + pub fn create(alloc: std.mem.Allocator) !*@This() { + const refs = [_]assets.AssetImportReference{ assets.MakeImportRefOptions( + "Mesh", + "m_damagedHelmet", + .{ .path = "gltf-samples/DamagedHelmet/glTF/DamagedHelmet.gltf" }, + ), assets.MakeImportRefOptions( + "Texture", + "t_damagedHelmet", + .{ .path = "gltf-samples/DamagedHelmet/glTF/Default_albedo.png" }, + ) }; + + if (first) { + first = false; + try assets.loadList(refs); + } + + const self = try alloc.create(@This()); + self.entity = try core.createEntity(); + const scene = self.entity.addComponent(core.Scene).?; + _ = scene; + + // scene.setScale(0.01, 0.01, 0.01); + const mesh = self.entity.addComponent(rend.MeshComponent).?; + mesh.setMesh("m_damagedHelmet"); + mesh.setTexture("t_damagedHelmet"); + + return self; + } + + pub fn getEntity(self: *@This()) core.Entity { + return self.entity; + } + + pub fn destroy(self: *@This()) void { + self.entity.destroy(); + self.data.release(self); + } +}; + pub fn prepare(self: *@This()) !void { core.engine_log(">>>>>>> game prepare", .{}); var z = core.tracy.ZoneN(@src(), "PREPARING GAME"); @@ -108,6 +152,7 @@ pub fn prepare(self: *@This()) !void { try self.objectSpawner.addSpawnFunction("fox", FoxObject); try self.objectSpawner.addSpawnFunction("doomplayer", DoomPlayer.DoomCanvas); try self.objectSpawner.addSpawnFunction("empire", @import("empire.zig")); + try self.objectSpawner.addSpawnFunction("DamagedHelmet", DamagedHelmet); ui.context().drawDebug = true;