Process or fold entities with a specific subset of component types. The subset is defined by the provided the component specs.
Note: For best performance use the spec with the least amount of components as the first argument, and after that use the spec that results in the least amount of intersections of component types.
Process every entity with a specific subset of component types. The provided callback receives the entity id, the requested components and the world. In the callback the entity will be active in the world, so you can directly query or modify it.
Ecs.EntityComponents.processFromLeft2
specs.velocity
specs.position
(\entityId velocity position currentWorld ->
Ecs.insertComponent specs.position
{ x = position.x + velocity.x * deltaSeconds
, y = position.y + velocity.y * deltaSeconds
}
currentWorld
)
world
processFromLeft : Ecs.Internal.ComponentSpec comparable a components -> (comparable -> a -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the specified component type. Entities are provided from lowest entity id to highest entity id.
processFromRight : Ecs.Internal.ComponentSpec comparable a components -> (comparable -> a -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the specified component type. Entities are provided from highest entity id to lowest entity id.
processFromLeft2 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> (comparable -> a1 -> a2 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 2 specified component types. Entities are provided from lowest entity id to highest entity id.
processFromRight2 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> (comparable -> a1 -> a2 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 2 specified component types. Entities are provided from highest entity id to lowest entity id.
processFromLeft3 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> (comparable -> a1 -> a2 -> a3 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 3 specified component types. Entities are provided from lowest entity id to highest entity id.
processFromRight3 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> (comparable -> a1 -> a2 -> a3 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 3 specified component types. Entities are provided from highest entity id to lowest entity id.
processFromLeft4 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 4 specified component types. Entities are provided from lowest entity id to highest entity id.
processFromRight4 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 4 specified component types. Entities are provided from highest entity id to lowest entity id.
processFromLeft5 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 5 specified component types. Entities are provided from lowest entity id to highest entity id.
processFromRight5 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 5 specified component types. Entities are provided from highest entity id to lowest entity id.
processFromLeft6 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> Ecs.Internal.ComponentSpec comparable a6 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 6 specified component types. Entities are provided from lowest entity id to highest entity id.
processFromRight6 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> Ecs.Internal.ComponentSpec comparable a6 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 6 specified component types. Entities are provided from highest entity id to lowest entity id.
processFromLeft7 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> Ecs.Internal.ComponentSpec comparable a6 components -> Ecs.Internal.ComponentSpec comparable a7 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 7 specified component types. Entities are provided from lowest entity id to highest entity id.
processFromRight7 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> Ecs.Internal.ComponentSpec comparable a6 components -> Ecs.Internal.ComponentSpec comparable a7 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 7 specified component types. Entities are provided from highest entity id to lowest entity id.
processFromLeft8 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> Ecs.Internal.ComponentSpec comparable a6 components -> Ecs.Internal.ComponentSpec comparable a7 components -> Ecs.Internal.ComponentSpec comparable a8 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> a8 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 8 specified component types. Entities are provided from lowest entity id to highest entity id.
processFromRight8 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> Ecs.Internal.ComponentSpec comparable a6 components -> Ecs.Internal.ComponentSpec comparable a7 components -> Ecs.Internal.ComponentSpec comparable a8 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> a8 -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons) -> Ecs.Internal.World comparable components singletons -> Ecs.Internal.World comparable components singletons
Process entities that contain at least the 8 specified component types. Entities are provided from highest entity id to lowest entity id.
Fold every entity with a specific subset of component types. The provided callback receives the entity id, the requested components and the provided accumulator. If you want to query or modify the entity in the callback then you have to use Ecs.onEntity first to make it active.
Ecs.EntityComponents.foldFromRight2
specs.shape
specs.position
(\entityId shape position list ->
( entityId, shape, position ) :: list
)
[]
world
foldFromLeft : Ecs.Internal.ComponentSpec comparable a components -> (comparable -> a -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the specified component type. Entities are provided from lowest entity id to highest entity id.
foldFromRight : Ecs.Internal.ComponentSpec comparable a components -> (comparable -> a -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the specified component type. Entities are provided from highest entity id to lowest entity id.
foldFromLeft2 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> (comparable -> a1 -> a2 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 2 specified component types. Entities are provided from lowest entity id to highest entity id.
foldFromRight2 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> (comparable -> a1 -> a2 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 2 specified component types. Entities are provided from highest entity id to lowest entity id.
foldFromLeft3 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> (comparable -> a1 -> a2 -> a3 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 3 specified component types. Entities are provided from lowest entity id to highest entity id.
foldFromRight3 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> (comparable -> a1 -> a2 -> a3 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 3 specified component types. Entities are provided from highest entity id to lowest entity id.
foldFromLeft4 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 4 specified component types. Entities are provided from lowest entity id to highest entity id.
foldFromRight4 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 4 specified component types. Entities are provided from highest entity id to lowest entity id.
foldFromLeft5 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 5 specified component types. Entities are provided from lowest entity id to highest entity id.
foldFromRight5 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 5 specified component types. Entities are provided from highest entity id to lowest entity id.
foldFromLeft6 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> Ecs.Internal.ComponentSpec comparable a6 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 6 specified component types. Entities are provided from lowest entity id to highest entity id.
foldFromRight6 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> Ecs.Internal.ComponentSpec comparable a6 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 6 specified component types. Entities are provided from highest entity id to lowest entity id.
foldFromLeft7 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> Ecs.Internal.ComponentSpec comparable a6 components -> Ecs.Internal.ComponentSpec comparable a7 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 7 specified component types. Entities are provided from lowest entity id to highest entity id.
foldFromRight7 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> Ecs.Internal.ComponentSpec comparable a6 components -> Ecs.Internal.ComponentSpec comparable a7 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 7 specified component types. Entities are provided from highest entity id to lowest entity id.
foldFromLeft8 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> Ecs.Internal.ComponentSpec comparable a6 components -> Ecs.Internal.ComponentSpec comparable a7 components -> Ecs.Internal.ComponentSpec comparable a8 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> a8 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 8 specified component types. Entities are provided from lowest entity id to highest entity id.
foldFromRight8 : Ecs.Internal.ComponentSpec comparable a1 components -> Ecs.Internal.ComponentSpec comparable a2 components -> Ecs.Internal.ComponentSpec comparable a3 components -> Ecs.Internal.ComponentSpec comparable a4 components -> Ecs.Internal.ComponentSpec comparable a5 components -> Ecs.Internal.ComponentSpec comparable a6 components -> Ecs.Internal.ComponentSpec comparable a7 components -> Ecs.Internal.ComponentSpec comparable a8 components -> (comparable -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> a8 -> acc -> acc) -> acc -> Ecs.Internal.World comparable components singletons -> acc
Fold entities that contain at least the 8 specified component types. Entities are provided from highest entity id to lowest entity id.