moved component array
This commit is contained in:
parent
545960ab62
commit
b93bc32d44
@ -6,7 +6,7 @@ const Etyp = @import("EntitySystemTypes.zig");
|
||||
const EntityIDs: std.TailQueue(u32) = init: {
|
||||
var temp = std.TailQueue(u32);
|
||||
var i = 0;
|
||||
while(i < Etyp.MAXEntitys){
|
||||
while (i < Etyp.MAXEntitys) {
|
||||
temp.append(i);
|
||||
i += 1;
|
||||
}
|
||||
@ -19,8 +19,7 @@ const Signatures: [Etyp.MAXEntitys]Etyp.Signature = undefined;
|
||||
//Entity System
|
||||
|
||||
pub fn CreateEntity() !Etyp.entity {
|
||||
if(EntityAmount >= Etyp.MAXEntitys)
|
||||
{
|
||||
if (EntityAmount >= Etyp.MAXEntitys) {
|
||||
return error{};
|
||||
}
|
||||
EntityAmount += 1;
|
||||
@ -41,31 +40,8 @@ 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,
|
||||
//Component Manager
|
||||
|
||||
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;
|
||||
}
|
||||
};
|
||||
pub fn RegisterComponent() void {
|
||||
|
||||
}
|
@ -8,16 +8,59 @@ pub const MAXEntitys: u32 = 1000;
|
||||
pub const MAXComponents: u32 = 32;
|
||||
|
||||
//Id Types
|
||||
pub const entity = usize;
|
||||
pub const Entity = usize;
|
||||
|
||||
pub const component = usize;
|
||||
pub const Component = usize;
|
||||
|
||||
pub const Signature = std.bit_set.IntegerBitSet(MAXComponents);
|
||||
|
||||
//Component array type
|
||||
|
||||
const ComponentArray = struct {
|
||||
Components: [MAXEntitys]type,
|
||||
Entity2Array: [usize]Entity,
|
||||
Array2Entity: [Entity]usize,
|
||||
sizeM: usize,
|
||||
|
||||
pub fn AddComponent(self: ComponentArray, entity: 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: Entity) void {
|
||||
var remidx: usize = self.Entity2Array[entity];
|
||||
var lastidx: usize = self.sizeM - 1;
|
||||
self.Components[remidx] = self.Components[lastidx];
|
||||
|
||||
var lastentity: entity = self.Array2Entity[lastidx];
|
||||
self.Entity2Array[lastentity] = remidx;
|
||||
self.Array2Entity[remidx] = lastentity;
|
||||
|
||||
self.Entity2Array[entity] = null;
|
||||
self.Array2Entity[lastentity] = null;
|
||||
|
||||
self.sizeM -= 1;
|
||||
}
|
||||
pub fn GetData(self: ComponentArray, entity: Entity) type {
|
||||
return self.Components[self.Entity2Array[entity]];
|
||||
}
|
||||
pub fn EntityDestroyed(self: ComponentArray, entity: Entity) void {
|
||||
for(self.Array2Entity) |val|{
|
||||
if(val == entity){
|
||||
self.Removedata(entity);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//Components
|
||||
|
||||
pub const Transform = struct {
|
||||
pos: rl.Vector2,
|
||||
rot: f16,
|
||||
scale: rl.Vector2,
|
||||
};
|
||||
};
|
||||
|
@ -12,14 +12,12 @@ pub fn main() anyerror!void {
|
||||
//rl.setTargetFPS(60);
|
||||
|
||||
|
||||
|
||||
while (!rl.windowShouldClose()) {
|
||||
try update();
|
||||
try draw();
|
||||
}
|
||||
}
|
||||
pub fn update() !void{
|
||||
|
||||
}
|
||||
pub fn draw() !void{
|
||||
rl.beginDrawing();
|
||||
|
Loading…
x
Reference in New Issue
Block a user