Backlog/projects/sampleGame/empire.zig

59 lines
1.4 KiB
Zig

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");