diff options
Diffstat (limited to 'src/ecs')
-rw-r--r-- | src/ecs/entity.zig | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/src/ecs/entity.zig b/src/ecs/entity.zig index 6131cff..2ad8556 100644 --- a/src/ecs/entity.zig +++ b/src/ecs/entity.zig @@ -1,3 +1,45 @@ const std = @import("std"); -pub const Entity = struct {}; +pub const Entity = struct { + id: usize, +}; + +pub const EntityCollection = struct { + allocator: std.mem.Allocator, + next_id: usize, + entities: std.AutoHashMap(usize, Entity), + + pub fn addEntity(self: *EntityCollection) !usize { + try self.entities.put(self.next_id, .{ + .id = self.next_id, + }); + + self.next_id += 1; + + return self.next_id - 1; + } + + pub fn init(allocator: std.mem.Allocator) EntityCollection { + return .{ + .allocator = allocator, + .next_id = 0, + .entities = std.AutoHashMap(usize, Entity).init(allocator), + }; + } + + pub fn deinit(self: *EntityCollection) void { + self.entities.deinit(); + } +}; + +test "create entities" { + try std.testing.expect(true); + + var ec = EntityCollection.init(std.testing.allocator); + defer ec.deinit(); + + for (0..128) |i| { + const id = ec.addEntity(); + try std.testing.expectEqual(i, id); + } +} |