|
|
@ -17,6 +17,7 @@ pub fn World(comptime ctx: anytype) type { |
|
|
|
const Context = @import("./context.zig").Context(ctx); |
|
|
|
const Context = @import("./context.zig").Context(ctx); |
|
|
|
const Entity = Context.Entity; |
|
|
|
const Entity = Context.Entity; |
|
|
|
const Iter = Context.Iter; |
|
|
|
const Iter = Context.Iter; |
|
|
|
|
|
|
|
const Pair = Context.Pair; |
|
|
|
|
|
|
|
|
|
|
|
raw: *c.ecs_world_t, |
|
|
|
raw: *c.ecs_world_t, |
|
|
|
|
|
|
|
|
|
|
@ -118,6 +119,18 @@ pub fn World(comptime ctx: anytype) type { |
|
|
|
return lookupAlive(self, Context.lookup(T)); |
|
|
|
return lookupAlive(self, Context.lookup(T)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// Looks up and returns a `Pair` made from the specified relation |
|
|
|
|
|
|
|
/// and target entities, returning an error if either is not alive. |
|
|
|
|
|
|
|
/// |
|
|
|
|
|
|
|
/// Note that in most cases, for functions that accept an `anytype`, |
|
|
|
|
|
|
|
/// you can simply specify the tuple `.{ relation, target }` to |
|
|
|
|
|
|
|
/// specify a pair, without having to use this function. |
|
|
|
|
|
|
|
pub fn pair(self: *Self, relation: anytype, target: anytype) !Pair { |
|
|
|
|
|
|
|
const rel = try self.lookupAlive(Context.anyToEntity(relation)); |
|
|
|
|
|
|
|
const tar = try self.lookupAlive(Context.anyToEntity(target)); |
|
|
|
|
|
|
|
return Pair.fromRaw(self, rel.raw, tar.raw); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// Creates or modifies an `Entity` in this `World`. |
|
|
|
/// Creates or modifies an `Entity` in this `World`. |
|
|
|
/// See `Entity.init(...)` for more information. |
|
|
|
/// See `Entity.init(...)` for more information. |
|
|
|
pub fn entity(self: *Self, config: Entity.Config, add: anytype) !Entity { |
|
|
|
pub fn entity(self: *Self, config: Entity.Config, add: anytype) !Entity { |
|
|
|