data: core.GameObjectData = undefined, entity: core.Entity, pub const SpawnOptions: extras.ObjectSpawner.Options = .{ .absoluteSpawnposition = true, }; const assetReferences = [_]assets.AssetImportReference{ assets.MakeImportRefOptions( "Mesh", "m_empire", .{ .path = "meshes/lost_empire.obj" }, ), assets.MakeImportRefOptions( "Texture", "t_empire", .{ .path = "textures/lost_empire-RGBA.png" }, ), }; pub var assetsLoaded: bool = false; pub fn create(alloc: std.mem.Allocator) !*@This() { const self = try alloc.create(@This()); if (!assetsLoaded) { try assets.loadList(assetReferences); assetsLoaded = true; } const lostEmpire = try core.createEntity(); const scene = lostEmpire.addComponent(core.Scene).?; scene.setPosition(.{ .y = -20 }); _ = scene.getAndResolveTransform(); const empireMesh = lostEmpire.addComponent(rend.MeshComponent).?; empireMesh.setMesh("m_empire"); empireMesh.setTexture("t_empire"); self.entity = lostEmpire; 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); } const backlog = @import("backlog"); const std = @import("std"); const rend = backlog.rend; const core = backlog.core; const assets = backlog.assets; const extras = @import("gameExtras");