moved component array

master
Red 9 months ago
parent 545960ab62
commit b93bc32d44

@ -19,8 +19,7 @@ const Signatures: [Etyp.MAXEntitys]Etyp.Signature = undefined;
//Entity System //Entity System
pub fn CreateEntity() !Etyp.entity { pub fn CreateEntity() !Etyp.entity {
if(EntityAmount >= Etyp.MAXEntitys) if (EntityAmount >= Etyp.MAXEntitys) {
{
return error{}; return error{};
} }
EntityAmount += 1; EntityAmount += 1;
@ -41,31 +40,8 @@ pub fn GetSignature(entity: Etyp.entity) Etyp.signature {
return Signatures[entity]; return Signatures[entity];
} }
const ComponentArray = struct { //Component Manager
Components: [Etyp.MAXEntitys]type,
Entity2Array: [usize]EntityIDs,
Array2Entity: [EntityIDs]usize,
sizeM: usize,
pub fn AddComponent(self: ComponentArray, entity: Etyp.entity, comp: type) void{ pub fn RegisterComponent() 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;
} }
};

@ -8,12 +8,55 @@ pub const MAXEntitys: u32 = 1000;
pub const MAXComponents: u32 = 32; pub const MAXComponents: u32 = 32;
//Id Types //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); 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 //Components
pub const Transform = struct { pub const Transform = struct {

@ -12,14 +12,12 @@ pub fn main() anyerror!void {
//rl.setTargetFPS(60); //rl.setTargetFPS(60);
while (!rl.windowShouldClose()) { while (!rl.windowShouldClose()) {
try update(); try update();
try draw(); try draw();
} }
} }
pub fn update() !void{ pub fn update() !void{
} }
pub fn draw() !void{ pub fn draw() !void{
rl.beginDrawing(); rl.beginDrawing();

Loading…
Cancel
Save