(loadFrom "nat-archive-tool" "src/nat/Lib.kiss") (prop :Map sprites (new Map)) (defNew [:String tagFilterString :String positionKey :PlayState playState] (super ->[archive e] ?(and (tagsMatch archive e tagFilterString) (hasComponent e Images)) ->[archive e] { (when !(hasComponent e Positions) (withWritableEntry archive e (addComponent archive e Positions (new Map)))) (withWritableComponents archive e [positions Positions] (when !(positions.exists positionKey) (dictSet positions positionKey (object x 0.0 y 0.0 z 0.0)))) (let [sprite (new EntrySprite positionKey archive e)] (playState.entryGroup.add sprite) (dictSet sprites e.id sprite)) }) (set onRemoveEntry ->[archive e] { (.kill (dictGet sprites e.id)) (sprites.remove e.id) }))