minimal template is a thing now
This commit is contained in:
parent
f7b3d03b40
commit
330f6f3772
|
|
@ -98,6 +98,7 @@ pub const AddProgramOptions = struct {
|
||||||
desc: []const u8,
|
desc: []const u8,
|
||||||
root_source_file: LazyPath,
|
root_source_file: LazyPath,
|
||||||
imports: []const Build.Module.Import = &.{},
|
imports: []const Build.Module.Import = &.{},
|
||||||
|
staticBuild: bool = false, // ugh.... why is this so hard...
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn addProgram(self: *BuildSystem, opts: AddProgramOptions) *std.Build.Module {
|
pub fn addProgram(self: *BuildSystem, opts: AddProgramOptions) *std.Build.Module {
|
||||||
|
|
@ -185,12 +186,7 @@ pub fn addExtraModule(self: *BuildSystem, mod: *std.Build.Module, moduleName: []
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn addDependencyInstalls(self: *BuildSystem, b: *std.Build, optimize: std.builtin.OptimizeMode) void {
|
pub fn addDependencyInstalls(self: *BuildSystem, b: *std.Build, optimize: std.builtin.OptimizeMode) void {
|
||||||
b.installArtifact(b.dependency("sdl3_lib", .{ .target = self.target, .optimize = optimize }).artifact("SDL3"));
|
// b.installArtifact(b.dependency("sdl3_lib", .{ .target = self.target, .optimize = optimize }).artifact("SDL3"));
|
||||||
// b.installArtifact(b.dependency("Backlog", .{ .target = self.target, .optimize = optimize }).artifact("backlog_c"));
|
|
||||||
|
|
||||||
//b.installArtifact(b.dependency("spng", .{ .target = self.target, .optimize = optimize }).artifact("spng_c"));
|
|
||||||
//b.installArtifact(b.dependency("zphysics", .{ .target = self.target, .optimize = optimize }).artifact("joltc"));
|
|
||||||
//b.installArtifact(b.dependency("ozz", .{ .target = self.target, .optimize = optimize }).artifact("ozz_cpp"));
|
|
||||||
|
|
||||||
for (cDependencyList) |d| {
|
for (cDependencyList) |d| {
|
||||||
b.installArtifact(b.dependency(
|
b.installArtifact(b.dependency(
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ allocator: std.mem.Allocator,
|
||||||
arena: std.heap.ArenaAllocator,
|
arena: std.heap.ArenaAllocator,
|
||||||
windowsMenu: std.ArrayListUnmanaged(*MenuEntry) = .{},
|
windowsMenu: std.ArrayListUnmanaged(*MenuEntry) = .{},
|
||||||
entriesByName: std.AutoHashMapUnmanaged(u32, *MenuEntry) = .{},
|
entriesByName: std.AutoHashMapUnmanaged(u32, *MenuEntry) = .{},
|
||||||
menuOpen: bool = true,
|
menuOpen: bool = false,
|
||||||
|
|
||||||
pub fn create(allocator: std.mem.Allocator) !*@This() {
|
pub fn create(allocator: std.mem.Allocator) !*@This() {
|
||||||
const self = try Slack.create(allocator);
|
const self = try Slack.create(allocator);
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -154,12 +154,15 @@ pub const Renderer = struct {
|
||||||
|
|
||||||
try self.createSamplers();
|
try self.createSamplers();
|
||||||
|
|
||||||
|
_ = try core.fs().installFileBytesMount("embedded:texture_sample.png", @constCast(&texture_sample_png), true);
|
||||||
|
_ = try core.fs().installFileBytesMount("embedded:primitive_box.obj", @constCast(&primitive_box_obj), true);
|
||||||
|
|
||||||
// todo... make these embedded
|
// todo... make these embedded
|
||||||
try assets.load(
|
try assets.load(
|
||||||
assets.MakeImportRefOptions(
|
assets.MakeImportRefOptions(
|
||||||
"Texture",
|
"Texture",
|
||||||
"t_default",
|
"t_default",
|
||||||
.{ .path = "textures/texture_sample.png" },
|
.{ .path = "embedded:texture_sample.png" },
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -167,7 +170,7 @@ pub const Renderer = struct {
|
||||||
assets.MakeImportRefOptions(
|
assets.MakeImportRefOptions(
|
||||||
"Mesh",
|
"Mesh",
|
||||||
"m_default_cube",
|
"m_default_cube",
|
||||||
.{ .path = "meshes/primitive_box.obj" },
|
.{ .path = "embedded:primitive_box.obj" },
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
var defaultTextureName = core.MakeName("t_default");
|
var defaultTextureName = core.MakeName("t_default");
|
||||||
|
|
@ -1020,6 +1023,8 @@ pub const GPUTextureType = gpu.GPUTexture;
|
||||||
|
|
||||||
const plane_obj align(8) = @embedFile("embedded/plane.obj").*;
|
const plane_obj align(8) = @embedFile("embedded/plane.obj").*;
|
||||||
const screenPlane_obj align(8) = @embedFile("embedded/screenPlane.obj").*;
|
const screenPlane_obj align(8) = @embedFile("embedded/screenPlane.obj").*;
|
||||||
|
const texture_sample_png align(8) = @embedFile("embedded/texture_sample.png").*;
|
||||||
|
const primitive_box_obj align(8) = @embedFile("embedded/primitive_box.obj").*;
|
||||||
const tracy = core.tracy;
|
const tracy = core.tracy;
|
||||||
|
|
||||||
pub const SsaoSystem = @import("ssao.zig");
|
pub const SsaoSystem = @import("ssao.zig");
|
||||||
|
|
|
||||||
|
|
@ -156,6 +156,10 @@ pub const PackerFS = struct {
|
||||||
|
|
||||||
pub fn watchPath(self: *@This(), path: []const u8) void {
|
pub fn watchPath(self: *@This(), path: []const u8) void {
|
||||||
// std.debug.print("self = {x}\n", .{@intFromPtr(self)});
|
// std.debug.print("self = {x}\n", .{@intFromPtr(self)});
|
||||||
|
|
||||||
|
// check the path exists before attempting to watch
|
||||||
|
std.fs.cwd().access(path, .{}) catch return;
|
||||||
|
|
||||||
const p = self.stringArena.allocator().dupeZ(u8, path) catch return;
|
const p = self.stringArena.allocator().dupeZ(u8, path) catch return;
|
||||||
const watch = watcher.createWatchPoint(
|
const watch = watcher.createWatchPoint(
|
||||||
p,
|
p,
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,112 @@
|
||||||
|
[ENGINE ]: defining componentScene
|
||||||
|
[ENGINE ]: Component container created scene.Scene @1c60c524798
|
||||||
|
[ENGINE ]: creating lua metatable Scene
|
||||||
|
[ENGINE ]: module started >>>> core <<<<
|
||||||
|
[ENGINE ]: platform settings windowing.PlatformParams{ .extent = math.Vector2Type(c_int,"Vector2c"[0..8]){ .x = 1600, .y = 900 }, .windowName = { 66, 97, 99, 107, 108, 111, 103, 32, 69, 110, 103, 105, 110, 101 }, .icon = { 116, 101, 120, 116, 117, 114, 101, 115, 47, 105, 99, 111, 110, 46, 112, 110, 103 }, .hasVideo = true }
|
||||||
|
[ENGINE ]: module started >>>> platform <<<<
|
||||||
|
[ENGINE ]: allocated size: 4035286 (3.848 MiB)
|
||||||
|
[ENGINE ]: peak allocated size size: 4035414 (3.848 MiB) (76 peak allocations)
|
||||||
|
[ENGINE ]: module started >>>> assets <<<<
|
||||||
|
[ENGINE ]: sgpu device created, using shader format: .spv
|
||||||
|
[ENGINE ]: using renderer... scientist
|
||||||
|
[ENGINE ]: creating shader meshes.vert => _shaders/spv/meshes.vert.spv gpu.GPUShaderStage.shaderstageVertex args: shaderTypes.ShaderLoadArgs{ .num_samplers = 0, .num_storage_textures = 0, .num_storage_buffers = 1, .num_uniform_buffers = 1 }
|
||||||
|
[ENGINE ]: creating shader lit_mesh.frag => _shaders/spv/lit_mesh.frag.spv gpu.GPUShaderStage.shaderstageFragment args: shaderTypes.ShaderLoadArgs{ .num_samplers = 4, .num_storage_textures = 0, .num_storage_buffers = 1, .num_uniform_buffers = 1 }
|
||||||
|
[GRAPHICS ]: swapchain format: gpu.GPUTextureFormat.textureformatB8g8r8a8Unorm
|
||||||
|
[ENGINE ]: creating shader postProc.vert => _shaders/spv/postProc.vert.spv gpu.GPUShaderStage.shaderstageVertex args: shaderTypes.ShaderLoadArgs{ .num_samplers = 0, .num_storage_textures = 0, .num_storage_buffers = 0, .num_uniform_buffers = 0 }
|
||||||
|
[ENGINE ]: creating shader postProc.frag => _shaders/spv/postProc.frag.spv gpu.GPUShaderStage.shaderstageFragment args: shaderTypes.ShaderLoadArgs{ .num_samplers = 3, .num_storage_textures = 0, .num_storage_buffers = 0, .num_uniform_buffers = 0 }
|
||||||
|
[GRAPHICS ]: hdr texture format format: gpu.GPUTextureFormat.textureformatR16g16b16a16Float
|
||||||
|
[GRAPHICS ]: mesh pool created 4000k vertices, 16000k indices
|
||||||
|
[ENGINE ]: asset loader for asset type (Mesh) registered
|
||||||
|
[ENGINE ]: Texture List Added
|
||||||
|
[ENGINE ]: asset loader for asset type (Texture) registered
|
||||||
|
[ENGINE ]: creating blocky sampler
|
||||||
|
[ENGINE ]: loading asset t_default (Texture) [embedded:texture_sample.png]
|
||||||
|
[ENGINE ]: loading texture t_default
|
||||||
|
[ENGINE ]: creating mipmap level 9
|
||||||
|
[ENGINE ]: loading asset m_default_cube (Mesh) [embedded:primitive_box.obj]
|
||||||
|
[ENGINE ]: loading mesh asset embedded:primitive_box.obj [obj]
|
||||||
|
[GRAPHICS ]: [embedded:primitive_box.obj] vertex count vertices=24 indices=36
|
||||||
|
[ENGINE ]: [DebugDrawSystem] starting up...
|
||||||
|
[ENGINE ]: loading asset m_debug_box (Mesh) [embedded:debug_box.obj]
|
||||||
|
[ENGINE ]: loading mesh asset embedded:debug_box.obj [obj]
|
||||||
|
[GRAPHICS ]: [embedded:debug_box.obj] vertex count vertices=24 indices=36
|
||||||
|
[ENGINE ]: loading asset m_debug_line (Mesh) [embedded:debug_line.obj]
|
||||||
|
[ENGINE ]: loading mesh asset embedded:debug_line.obj [obj]
|
||||||
|
[GRAPHICS ]: [embedded:debug_line.obj] vertex count vertices=2 indices=3
|
||||||
|
[ENGINE ]: loading asset m_debug_sphere (Mesh) [embedded:debug_sphere.obj]
|
||||||
|
[ENGINE ]: loading mesh asset embedded:debug_sphere.obj [obj]
|
||||||
|
[GRAPHICS ]: [embedded:debug_sphere.obj] vertex count vertices=240 indices=336
|
||||||
|
[ENGINE ]: [DebugDrawSystem] registering to renderer...
|
||||||
|
[ENGINE ]: creating shader debug.vert => _shaders/spv/debug.vert.spv gpu.GPUShaderStage.shaderstageVertex args: shaderTypes.ShaderLoadArgs{ .num_samplers = 0, .num_storage_textures = 0, .num_storage_buffers = 1, .num_uniform_buffers = 1 }
|
||||||
|
[ENGINE ]: creating shader debug.frag => _shaders/spv/debug.frag.spv gpu.GPUShaderStage.shaderstageFragment args: shaderTypes.ShaderLoadArgs{ .num_samplers = 0, .num_storage_textures = 0, .num_storage_buffers = 0, .num_uniform_buffers = 0 }
|
||||||
|
[ENGINE ]: creating shader meshes.vert => _shaders/spv/meshes.vert.spv gpu.GPUShaderStage.shaderstageVertex args: shaderTypes.ShaderLoadArgs{ .num_samplers = 0, .num_storage_textures = 0, .num_storage_buffers = 1, .num_uniform_buffers = 1 }
|
||||||
|
[ENGINE ]: creating shader depthOnly.frag => _shaders/spv/depthOnly.frag.spv gpu.GPUShaderStage.shaderstageFragment args: shaderTypes.ShaderLoadArgs{ .num_samplers = 0, .num_storage_textures = 0, .num_storage_buffers = 0, .num_uniform_buffers = 0 }
|
||||||
|
[ENGINE ]: loading asset m_skybox (Mesh) [embedded:skybox_mesh.obj]
|
||||||
|
[ENGINE ]: loading mesh asset embedded:skybox_mesh.obj [obj]
|
||||||
|
[GRAPHICS ]: [embedded:skybox_mesh.obj] vertex count vertices=24 indices=36
|
||||||
|
[ENGINE ]: creating shader skybox.vert => _shaders/spv/skybox.vert.spv gpu.GPUShaderStage.shaderstageVertex args: shaderTypes.ShaderLoadArgs{ .num_samplers = 0, .num_storage_textures = 0, .num_storage_buffers = 0, .num_uniform_buffers = 1 }
|
||||||
|
[ENGINE ]: creating shader skybox.frag => _shaders/spv/skybox.frag.spv gpu.GPUShaderStage.shaderstageFragment args: shaderTypes.ShaderLoadArgs{ .num_samplers = 1, .num_storage_textures = 0, .num_storage_buffers = 0, .num_uniform_buffers = 1 }
|
||||||
|
[ENGINE ]: loading asset m_plane (Mesh) [embedded:plane.obj]
|
||||||
|
[ENGINE ]: loading mesh asset embedded:plane.obj [obj]
|
||||||
|
[GRAPHICS ]: [embedded:plane.obj] vertex count vertices=4 indices=6
|
||||||
|
[ENGINE ]: loading asset m_screenPlane (Mesh) [embedded:screenPlane.obj]
|
||||||
|
[ENGINE ]: loading mesh asset embedded:screenPlane.obj [obj]
|
||||||
|
[GRAPHICS ]: [embedded:screenPlane.obj] vertex count vertices=4 indices=6
|
||||||
|
[ENGINE ]: creating ssao pipeline
|
||||||
|
[ENGINE ]: creating shader postProc.vert => _shaders/spv/postProc.vert.spv gpu.GPUShaderStage.shaderstageVertex args: shaderTypes.ShaderLoadArgs{ .num_samplers = 0, .num_storage_textures = 0, .num_storage_buffers = 0, .num_uniform_buffers = 0 }
|
||||||
|
[ENGINE ]: creating shader ssao.frag => _shaders/spv/ssao.frag.spv gpu.GPUShaderStage.shaderstageFragment args: shaderTypes.ShaderLoadArgs{ .num_samplers = 3, .num_storage_textures = 0, .num_storage_buffers = 0, .num_uniform_buffers = 1 }
|
||||||
|
[ENGINE ]: defining component_MeshComponent
|
||||||
|
[ENGINE ]: Component container created meshes.MeshComponent @24618af28e8
|
||||||
|
[ENGINE ]: creating lua metatable Mesh
|
||||||
|
[ENGINE ]: defining component_CameraComponent
|
||||||
|
[ENGINE ]: Component container created camera.CameraComponent @1c60e4b9d68
|
||||||
|
[ENGINE ]: creating lua metatable Camera
|
||||||
|
[ENGINE ]: module started >>>> rend <<<<
|
||||||
|
[GRAPHICS ]: imgui startup
|
||||||
|
[ENGINE ]: module started >>>> imgui <<<<
|
||||||
|
[ENGINE ]: UI module started
|
||||||
|
[ENGINE ]: [Fontcache] loading font cache for default font
|
||||||
|
[ENGINE ]: [Fontcache] loading font cache for monospace font
|
||||||
|
[ENGINE ]: [Fontcache] loading font cache for bitmap font
|
||||||
|
[GRAPHICS ]: imgui startup
|
||||||
|
[ENGINE ]: module started >>>> ui <<<<
|
||||||
|
[ENGINE ]: creating Game context
|
||||||
|
[ENGINE ]: calling gEngine.run
|
||||||
|
[ENGINE ]: engine loop started
|
||||||
|
[ENGINE ]: program ready
|
||||||
|
[ENGINE ]: uploading mesh => m_default_cube
|
||||||
|
[GRAPHICS ]: uploading 24 vertices and 36 indices
|
||||||
|
[ENGINE ]: install mesh by name 16
|
||||||
|
[ENGINE ]: uploading mesh => m_debug_box
|
||||||
|
[GRAPHICS ]: uploading 24 vertices and 36 indices
|
||||||
|
[ENGINE ]: install mesh by name 20
|
||||||
|
[ENGINE ]: uploading mesh => m_debug_line
|
||||||
|
[GRAPHICS ]: uploading 2 vertices and 3 indices
|
||||||
|
[ENGINE ]: install mesh by name 21
|
||||||
|
[ENGINE ]: uploading mesh => m_debug_sphere
|
||||||
|
[GRAPHICS ]: uploading 240 vertices and 336 indices
|
||||||
|
[ENGINE ]: install mesh by name 22
|
||||||
|
[ENGINE ]: uploading mesh => m_skybox
|
||||||
|
[GRAPHICS ]: uploading 24 vertices and 36 indices
|
||||||
|
[ENGINE ]: install mesh by name 30
|
||||||
|
[ENGINE ]: uploading mesh => m_plane
|
||||||
|
[GRAPHICS ]: uploading 4 vertices and 6 indices
|
||||||
|
[ENGINE ]: install mesh by name 37
|
||||||
|
[ENGINE ]: uploading mesh => m_screenPlane
|
||||||
|
[GRAPHICS ]: uploading 4 vertices and 6 indices
|
||||||
|
[ENGINE ]: install mesh by name 38
|
||||||
|
[ENGINE ]: Processing exit signals
|
||||||
|
[ENGINE ]: checking everything is ready to exit
|
||||||
|
[ENGINE ]: checking everything is ready to exit engineObject.InterfaceRef2(engineObject.EngineObjectVTable){ .ptr = anyopaque@1c60c49a9e8, .vtable = engineObject.EngineObjectVTable{ .typeName = { 119, 105, 110, 100, 111, 119, 105, 110, 103, 46, 80, 108, 97, 116, 102, 111, 114, 109, 73, 110, 115, 116, 97, 110, 99, 101 }, .typeSize = 112, .typeAlign = 8, .singletonName = { 112, 108, 97, 116, 102, 111, 114, 109, 46, 73, 110, 115, 116, 97, 110, 99, 101 }, .init_func = fn (mem.Allocator) error{OutOfMemory,UnknownStatePanic,BadInit,UnknownError}!*anyopaque@7ff66491a590, .tick_func = null, .engineDraw_func = null, .preTick_func = null, .deinit_func = fn (*anyopaque) void@7ff66491a7f0, .postInit_func = null, .processEvents = null, .exitSignal_func = fn (*anyopaque) error{OutOfMemory,UnknownStatePanic,BadInit,UnknownError}!void@7ff66491a6d0, .readyToExit_func = fn (*anyopaque) bool@7ff66491a750, .prepare_func = null, .fieldListHash = null, .fieldList = null, .slackSize = null } }
|
||||||
|
[ENGINE ]: exiting
|
||||||
|
[ENGINE ]: module shutting down >>>> ui <<<<
|
||||||
|
[ENGINE ]: module shutting down >>>> imgui <<<<
|
||||||
|
[ENGINE ]: module shutting down >>>> rend <<<<
|
||||||
|
[ENGINE ]: undefining component meshes.MeshComponent
|
||||||
|
[ENGINE ]: undefining component camera.CameraComponent
|
||||||
|
[ENGINE ]: module shutting down >>>> assets <<<<
|
||||||
|
[ENGINE ]: module shutting down >>>> platform <<<<
|
||||||
|
[ENGINE ]: module shutting down >>>> core <<<<
|
||||||
|
[ENGINE ]: allocated size: 3064738 (2.923 MiB)
|
||||||
|
[ENGINE ]: peak allocated size size: 9418782 (8.982 MiB) (190 peak allocations)
|
||||||
|
[ENGINE ]: undefining component scene.Scene
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
const std = @import("std");
|
||||||
|
const Backlog = @import("Backlog");
|
||||||
|
|
||||||
|
pub fn build(b: *std.Build) void {
|
||||||
|
const target = b.standardTargetOptions(.{});
|
||||||
|
const optimize = b.standardOptimizeOption(.{});
|
||||||
|
|
||||||
|
var blbuild = Backlog.init(b, .{
|
||||||
|
.target = target,
|
||||||
|
.optimize = optimize,
|
||||||
|
.backlogRoot = "../",
|
||||||
|
});
|
||||||
|
|
||||||
|
_ = blbuild.addProgram(.{
|
||||||
|
.name = "minimal",
|
||||||
|
.desc = "tool program, no assets",
|
||||||
|
.root_source_file = b.path("src/main.zig"),
|
||||||
|
});
|
||||||
|
|
||||||
|
blbuild.addDependencyInstalls(b, .ReleaseFast); //.ReleaseFast);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
.{
|
||||||
|
.name = .MyProjects,
|
||||||
|
.version = "0.0.0",
|
||||||
|
.dependencies = .{
|
||||||
|
// engine libraries
|
||||||
|
// you will want to change these paths.
|
||||||
|
//
|
||||||
|
// .. theoretically if this is a static build,
|
||||||
|
.Backlog = .{ .path = "../../" },
|
||||||
|
.SpirvReflect = .{ .path = "../../lib/spirv-reflect-zig" },
|
||||||
|
|
||||||
|
.zphysics = .{.path = "../../lib/zphysics"},
|
||||||
|
.spng = .{ .path = "../../lib/spng" },
|
||||||
|
.ozz = .{ .path = "../../lib/ozz" },
|
||||||
|
.sdl3_lib = .{ .path = "../../lib/sdl3/SDL" },
|
||||||
|
.miniaudio = .{ .path = "../../lib/miniaudio" },
|
||||||
|
.lua = .{ .path = "../../lib/lua" },
|
||||||
|
},
|
||||||
|
.paths = .{
|
||||||
|
"",
|
||||||
|
},
|
||||||
|
.fingerprint = 0x14099f7390321175
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
.{
|
||||||
|
.name = .MyProjects,
|
||||||
|
.version = "0.0.0",
|
||||||
|
.dependencies = .{
|
||||||
|
// engine libraries
|
||||||
|
// you will want to change these paths.
|
||||||
|
//
|
||||||
|
// .. theoretically if this is a static build,
|
||||||
|
.Backlog = .{ .path = "$RELATIVEPATH/" },
|
||||||
|
.SpirvReflect = .{ .path = "$RELATIVEPATH/lib/spirv-reflect-zig" },
|
||||||
|
|
||||||
|
.zphysics = .{.path = "$RELATIVEPATH/lib/zphysics"},
|
||||||
|
.spng = .{ .path = "$RELATIVEPATH/lib/spng" },
|
||||||
|
.ozz = .{ .path = "$RELATIVEPATH/lib/ozz" },
|
||||||
|
.sdl3_lib = .{ .path = "$RELATIVEPATH/lib/sdl3/SDL" },
|
||||||
|
.miniaudio = .{ .path = "$RELATIVEPATH/lib/miniaudio" },
|
||||||
|
.lua = .{ .path = "$RELATIVEPATH/lib/lua" },
|
||||||
|
},
|
||||||
|
.paths = .{
|
||||||
|
"",
|
||||||
|
},
|
||||||
|
.fingerprint = 0x14099f7390321175
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
origDir = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
backlogEngineDir = os.path.abspath(os.path.join(origDir, "../../"))
|
||||||
|
|
||||||
|
cmd = [sys.executable, os.path.join(backlogEngineDir, "tools/scripts/cookShaders.py")]
|
||||||
|
|
||||||
|
subprocess.run(cmd, cwd=origDir)
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
pub var NeonObjectTable = core.EngineObjectVTable.from(@This(), "main");
|
||||||
|
|
||||||
|
allocator: std.mem.Allocator,
|
||||||
|
|
||||||
|
pub fn init(allocator: std.mem.Allocator) !*@This() {
|
||||||
|
const self = try allocator.create(@This());
|
||||||
|
self.* = .{
|
||||||
|
.allocator = allocator,
|
||||||
|
};
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn prepare(self: *@This()) !void {
|
||||||
|
_ = self;
|
||||||
|
core.engine_log("program ready", .{});
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn tick(self: *@This(), dt: f64) void {
|
||||||
|
_ = self;
|
||||||
|
_ = dt;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn deinit(self: *@This()) void {
|
||||||
|
self.allocator.destroy(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn main() anyerror!void {
|
||||||
|
var spec = try bl.createSpecVariant(.{
|
||||||
|
.name = "sampleGame",
|
||||||
|
.imgui = true,
|
||||||
|
.physics = false,
|
||||||
|
.audio = false,
|
||||||
|
}, std.heap.c_allocator);
|
||||||
|
|
||||||
|
_ = bl.initAndRun(&NeonObjectTable, &spec);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std = @import("std");
|
||||||
|
const bl = @import("Backlog");
|
||||||
|
// const ig = backlog.imgui.api; // imgui api
|
||||||
|
const core = bl.core;
|
||||||
Loading…
Reference in New Issue