From 47090887caa34ab850bfc82f7cff9155ae7dea2e Mon Sep 17 00:00:00 2001 From: copygirl Date: Tue, 27 Dec 2022 18:21:42 +0100 Subject: [PATCH] Add Iterator.IsField(int, Identifier) method --- src/gaemstone.ECS/Iterator.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/gaemstone.ECS/Iterator.cs b/src/gaemstone.ECS/Iterator.cs index db6bbe7..f26d66c 100644 --- a/src/gaemstone.ECS/Iterator.cs +++ b/src/gaemstone.ECS/Iterator.cs @@ -94,13 +94,14 @@ public unsafe class Iterator return ecs_field_is_set(ptr, index); } + // TODO: Potentially misleading, doesn't check the field's backing data type. + // The id might be "(Identifier, Name)", but its data type "Identifier". public bool FieldIs(int index) + => FieldIs(index, World.LookupByType()); + public bool FieldIs(int index, Identifier id) { - fixed (ecs_iter_t* ptr = &Value) { - var id = ecs_field_id(ptr, index); - var comp = World.LookupByTypeOrThrow(); - return id == comp.Entity.Value.Data; - } + fixed (ecs_iter_t* ptr = &Value) + return ecs_field_id(ptr, index) == id.Value; } public override string ToString()