diff --git a/Sources/FirebladeECS/Nexus+Entity.swift b/Sources/FirebladeECS/Nexus+Entity.swift index 772da3e..5b8181e 100644 --- a/Sources/FirebladeECS/Nexus+Entity.swift +++ b/Sources/FirebladeECS/Nexus+Entity.swift @@ -67,3 +67,26 @@ extension Nexus { return true } } + +// MARK: - entities iterator +extension Nexus { + public struct EntitiesIterator: IteratorProtocol { + private var iterator: AnyIterator + + @usableFromInline + init(nexus: Nexus) { + var iter = nexus.componentIdsByEntity.keys.makeIterator() + iterator = AnyIterator { + guard let entityId = iter.next() else { + return nil + } + return Entity(nexus: nexus, id: entityId) + } + } + + public func next() -> Entity? { + iterator.next() + } + } +} +extension Nexus.EntitiesIterator: Sequence { }