commit
4fff81f82d
@ -0,0 +1,18 @@
|
||||
# This file is for zig-specific build artifacts.
|
||||
# If you have OS-specific or editor-specific files to ignore,
|
||||
# such as *.swp or .DS_Store, put those in your global
|
||||
# ~/.gitignore and put this in your ~/.gitconfig:
|
||||
#
|
||||
# [core]
|
||||
# excludesfile = ~/.gitignore
|
||||
#
|
||||
# Cheers!
|
||||
# -andrewrk
|
||||
|
||||
zig-cache/
|
||||
zig-out/
|
||||
/release/
|
||||
/debug/
|
||||
/build/
|
||||
/build-*/
|
||||
/docgen_tmp/
|
@ -0,0 +1,38 @@
|
||||
const std = @import("std");
|
||||
const rl = @import("raylib-zig/build.zig");
|
||||
|
||||
pub fn build(b: *std.Build) !void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
const optimize = b.standardOptimizeOption(.{});
|
||||
var raylib = rl.getModule(b, "raylib-zig");
|
||||
var raylib_math = rl.math.getModule(b, "raylib-zig");
|
||||
//web exports are completely separate
|
||||
if (target.getOsTag() == .emscripten) {
|
||||
const exe_lib = rl.compileForEmscripten(b, "zig-raylib-game-test", "src/main.zig", target, optimize);
|
||||
exe_lib.addModule("raylib", raylib);
|
||||
exe_lib.addModule("raylib-math", raylib_math);
|
||||
const raylib_artifact = rl.getRaylib(b, target, optimize);
|
||||
// Note that raylib itself is not actually added to the exe_lib output file, so it also needs to be linked with emscripten.
|
||||
exe_lib.linkLibrary(raylib_artifact);
|
||||
const link_step = try rl.linkWithEmscripten(b, &[_]*std.Build.Step.Compile{ exe_lib, raylib_artifact });
|
||||
b.getInstallStep().dependOn(&link_step.step);
|
||||
const run_step = try rl.emscriptenRunStep(b);
|
||||
run_step.step.dependOn(&link_step.step);
|
||||
const run_option = b.step("run", "Run zig-raylib-game-test");
|
||||
run_option.dependOn(&run_step.step);
|
||||
return;
|
||||
}
|
||||
|
||||
const exe = b.addExecutable(.{ .name = "zig-raylib-game-test", .root_source_file = .{ .path = "src/main.zig" }, .optimize = optimize, .target = target });
|
||||
|
||||
rl.link(b, exe, target, optimize);
|
||||
exe.addModule("raylib", raylib);
|
||||
exe.addModule("raylib-math", raylib_math);
|
||||
|
||||
const run_cmd = b.addRunArtifact(exe);
|
||||
const run_step = b.step("run", "Run zig-raylib-game-test");
|
||||
run_step.dependOn(&run_cmd.step);
|
||||
|
||||
b.installArtifact(exe);
|
||||
}
|
||||
|
@ -0,0 +1,11 @@
|
||||
.{
|
||||
.name = "raylib-zig",
|
||||
.version = "0.1.1",
|
||||
.dependencies = .{
|
||||
.raylib = .{
|
||||
.url = "https://github.com/raysan5/raylib/archive/5.0.tar.gz",
|
||||
.hash = "1220c28847ca8e8756734ae84355802b764c9d9cf4de057dbc6fc2b15c56e726f27b",
|
||||
},
|
||||
},
|
||||
.paths = .{""},
|
||||
}
|
@ -0,0 +1 @@
|
||||
Subproject commit 7f73ddfa720b7fbda680b2846ba3d7f0ec9f8741
|
@ -0,0 +1,71 @@
|
||||
const std = @import("std");
|
||||
const Etyp = @import("EntitySystemTypes.zig");
|
||||
|
||||
//Variables Entity
|
||||
|
||||
const EntityIDs: std.TailQueue(u32) = init: {
|
||||
var temp = std.TailQueue(u32);
|
||||
var i = 0;
|
||||
while(i < Etyp.MAXEntitys){
|
||||
temp.append(i);
|
||||
i += 1;
|
||||
}
|
||||
break :init temp;
|
||||
};
|
||||
var EntityAmount: u32 = 0;
|
||||
|
||||
const Signatures: [Etyp.MAXEntitys]Etyp.Signature = undefined;
|
||||
|
||||
//Entity System
|
||||
|
||||
pub fn CreateEntity() !Etyp.entity {
|
||||
if(EntityAmount >= Etyp.MAXEntitys)
|
||||
{
|
||||
return error{};
|
||||
}
|
||||
EntityAmount += 1;
|
||||
return EntityIDs.popFirst();
|
||||
}
|
||||
|
||||
pub fn DestroyEntity(entity: Etyp.entity) void {
|
||||
Signatures[entity] = null;
|
||||
EntityIDs.append(entity);
|
||||
EntityAmount -= 1;
|
||||
}
|
||||
|
||||
pub fn SetSignature(entity: Etyp.entity, signature: Etyp.Signature) void {
|
||||
Signatures[entity] = signature;
|
||||
}
|
||||
|
||||
pub fn GetSignature(entity: Etyp.entity) Etyp.signature {
|
||||
return Signatures[entity];
|
||||
}
|
||||
|
||||
const ComponentArray = struct {
|
||||
Components: [Etyp.MAXEntitys]type,
|
||||
Entity2Array: [usize]EntityIDs,
|
||||
Array2Entity: [EntityIDs]usize,
|
||||
sizeM: usize,
|
||||
|
||||
pub fn AddComponent(self: ComponentArray, entity: Etyp.entity, comp: type) void{
|
||||
var newidx: usize = self.sizeM;
|
||||
self.Entity2Array[entity] = newidx;
|
||||
self.Entity2Array[newidx] = entity;
|
||||
self.Components[newidx] = comp;
|
||||
self.sizeM += 1;
|
||||
}
|
||||
pub fn Removedata(self: ComponentArray, entity: Etyp.entity) void{
|
||||
var remidx: usize = self.Entity2Array[entity];
|
||||
var lastidx: usize = self.sizeM-1;
|
||||
self.Components[remidx] = self.Components[lastidx];
|
||||
|
||||
var lastentity: Etyp.entity = self.Array2Entity[lastidx];
|
||||
self.Entity2Array[lastentity] = remidx;
|
||||
self.Array2Entity[remidx] = lastentity;
|
||||
|
||||
self.Entity2Array[entity] = null;
|
||||
self.Array2Entity[lastentity] = null;
|
||||
|
||||
self.sizeM -= 1;
|
||||
}
|
||||
};
|
@ -0,0 +1,23 @@
|
||||
const std = @import("std");
|
||||
const rl = @import("raylib");
|
||||
|
||||
//Max Vars
|
||||
|
||||
pub const MAXEntitys: u32 = 1000;
|
||||
|
||||
pub const MAXComponents: u32 = 32;
|
||||
|
||||
//Id Types
|
||||
pub const entity = usize;
|
||||
|
||||
pub const component = usize;
|
||||
|
||||
pub const Signature = std.bit_set.IntegerBitSet(MAXComponents);
|
||||
|
||||
//Components
|
||||
|
||||
pub const Transform = struct {
|
||||
pos: rl.Vector2,
|
||||
rot: f16,
|
||||
scale: rl.Vector2,
|
||||
};
|
After Width: | Height: | Size: 258 B |
@ -0,0 +1,30 @@
|
||||
const rl = @import("raylib");
|
||||
const std = @import("std");
|
||||
const EnS = @import("EntitySystem.zig");
|
||||
|
||||
pub fn main() anyerror!void {
|
||||
const screenWidth = 1280;
|
||||
const screenHeight = 720;
|
||||
|
||||
rl.initWindow(screenWidth, screenHeight, "AHHHH");
|
||||
defer rl.closeWindow();
|
||||
|
||||
//rl.setTargetFPS(60);
|
||||
|
||||
|
||||
|
||||
while (!rl.windowShouldClose()) {
|
||||
try update();
|
||||
try draw();
|
||||
}
|
||||
}
|
||||
pub fn update() !void{
|
||||
|
||||
}
|
||||
pub fn draw() !void{
|
||||
rl.beginDrawing();
|
||||
defer rl.endDrawing();
|
||||
|
||||
rl.clearBackground(rl.Color.black);
|
||||
rl.drawFPS(10, 10);
|
||||
}
|
Loading…
Reference in new issue