aboutsummaryrefslogtreecommitdiff
path: root/src/ecs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ecs')
-rw-r--r--src/ecs/entity.zig44
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);
+ }
+}