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()