From 8719bfeebebfb230e723a336cdc8c6a34c9f6997 Mon Sep 17 00:00:00 2001 From: copygirl Date: Sun, 31 Mar 2024 11:55:14 +0200 Subject: [PATCH] Add world.pair function --- src/world.zig | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/world.zig b/src/world.zig index d48c6b9..b850dd0 100644 --- a/src/world.zig +++ b/src/world.zig @@ -17,6 +17,7 @@ pub fn World(comptime ctx: anytype) type { const Context = @import("./context.zig").Context(ctx); const Entity = Context.Entity; const Iter = Context.Iter; + const Pair = Context.Pair; raw: *c.ecs_world_t, @@ -118,6 +119,18 @@ pub fn World(comptime ctx: anytype) type { 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`. /// See `Entity.init(...)` for more information. pub fn entity(self: *Self, config: Entity.Config, add: anytype) !Entity {