| Copyright | (c) Matt Hunzinger 2025 |
|---|---|
| License | BSD-style (see the LICENSE file in the distribution) |
| Maintainer | matt@hunzinger.me |
| Stability | provisional |
| Portability | non-portable (GHC extensions) |
| Safe Haskell | None |
| Language | Haskell2010 |
Aztecs.ECS.System
Description
Synopsis
- newtype System (m :: Type -> Type) a = System {
- runSystem :: Components -> (Components, DynamicSystem m a)
- data DynamicSystem (m :: Type -> Type) a where
- Pure :: forall a (m :: Type -> Type). a -> DynamicSystem m a
- Map :: forall b a (m :: Type -> Type). (b -> a) -> DynamicSystem m b -> DynamicSystem m a
- Ap :: forall (m :: Type -> Type) b a. DynamicSystem m (b -> a) -> DynamicSystem m b -> DynamicSystem m a
- Op :: forall (m :: Type -> Type) a. Set ComponentID -> Op m a -> DynamicSystem m a
- runDynamicSystem :: Monad m => DynamicSystem m a -> Entities m -> m (a, Entities m, Access m ())
- readQuery :: forall (m :: Type -> Type) a. Monad m => Query m a -> System m (Vector a)
- readQueryFiltered :: forall (m :: Type -> Type) a. Monad m => Query m a -> QueryFilter -> System m (Vector a)
- readQuerySingle :: forall (m :: Type -> Type) a. (HasCallStack, Monad m) => Query m a -> System m a
- readQuerySingleMaybe :: forall (m :: Type -> Type) a. Monad m => Query m a -> System m (Maybe a)
- runQuery :: forall (m :: Type -> Type) a. Monad m => Query m a -> System m (Vector a)
- runQueryFiltered :: forall (m :: Type -> Type) a. Monad m => Query m a -> QueryFilter -> System m (Vector a)
- runQuerySingle :: forall (m :: Type -> Type) a. (HasCallStack, Monad m) => Query m a -> System m a
- runQuerySingleMaybe :: forall (m :: Type -> Type) a. Monad m => Query m a -> System m (Maybe a)
- readQueryDyn :: forall (m :: Type -> Type) a. Set ComponentID -> DynamicQuery m a -> System m (Vector a)
- readQueryFilteredDyn :: forall (m :: Type -> Type) a. Set ComponentID -> DynamicQuery m a -> (Node m -> Bool) -> System m (Vector a)
- readQuerySingleMaybeDyn :: forall (m :: Type -> Type) a. Set ComponentID -> DynamicQuery m a -> System m (Maybe a)
- runQueryDyn :: forall (m :: Type -> Type) a. Set ComponentID -> DynamicQuery m a -> System m (Vector a)
- runQueryFilteredDyn :: forall (m :: Type -> Type) a. Set ComponentID -> (Node m -> Bool) -> DynamicQuery m a -> System m (Vector a)
- runQuerySingleMaybeDyn :: forall (m :: Type -> Type) a. Set ComponentID -> DynamicQuery m a -> System m (Maybe a)
Systems
newtype System (m :: Type -> Type) a Source #
System for querying entities.
Constructors
| System | |
Fields
| |
Dynamic systems
data DynamicSystem (m :: Type -> Type) a where Source #
Dynamic system.
Constructors
| Pure :: forall a (m :: Type -> Type). a -> DynamicSystem m a | Pure value. |
| Map :: forall b a (m :: Type -> Type). (b -> a) -> DynamicSystem m b -> DynamicSystem m a | Functor map. |
| Ap :: forall (m :: Type -> Type) b a. DynamicSystem m (b -> a) -> DynamicSystem m b -> DynamicSystem m a | Applicative apply. |
| Op :: forall (m :: Type -> Type) a. Set ComponentID -> Op m a -> DynamicSystem m a | Query operation. |
Instances
| Applicative (DynamicSystem m) Source # | |
Defined in Aztecs.ECS.System.Dynamic Methods pure :: a -> DynamicSystem m a # (<*>) :: DynamicSystem m (a -> b) -> DynamicSystem m a -> DynamicSystem m b # liftA2 :: (a -> b -> c) -> DynamicSystem m a -> DynamicSystem m b -> DynamicSystem m c # (*>) :: DynamicSystem m a -> DynamicSystem m b -> DynamicSystem m b # (<*) :: DynamicSystem m a -> DynamicSystem m b -> DynamicSystem m a # | |
| Functor (DynamicSystem m) Source # | |
Defined in Aztecs.ECS.System.Dynamic Methods fmap :: (a -> b) -> DynamicSystem m a -> DynamicSystem m b # (<$) :: a -> DynamicSystem m b -> DynamicSystem m a # | |
runDynamicSystem :: Monad m => DynamicSystem m a -> Entities m -> m (a, Entities m, Access m ()) Source #
Run a dynamic system on entities, returning results, updated entities, and hooks to run.
Queries
readQuery :: forall (m :: Type -> Type) a. Monad m => Query m a -> System m (Vector a) Source #
Match all entities.
readQueryFiltered :: forall (m :: Type -> Type) a. Monad m => Query m a -> QueryFilter -> System m (Vector a) Source #
Match all entities with a filter.
readQuerySingle :: forall (m :: Type -> Type) a. (HasCallStack, Monad m) => Query m a -> System m a Source #
readQuerySingleMaybe :: forall (m :: Type -> Type) a. Monad m => Query m a -> System m (Maybe a) Source #
runQuery :: forall (m :: Type -> Type) a. Monad m => Query m a -> System m (Vector a) Source #
Map all matching entities.
runQueryFiltered :: forall (m :: Type -> Type) a. Monad m => Query m a -> QueryFilter -> System m (Vector a) Source #
Filter and map all matching entities.
runQuerySingle :: forall (m :: Type -> Type) a. (HasCallStack, Monad m) => Query m a -> System m a Source #
runQuerySingleMaybe :: forall (m :: Type -> Type) a. Monad m => Query m a -> System m (Maybe a) Source #
Map a single matching entity, or Nothing.
Dynamic queries
readQueryDyn :: forall (m :: Type -> Type) a. Set ComponentID -> DynamicQuery m a -> System m (Vector a) Source #
Match all entities with a dynamic query.
readQueryFilteredDyn :: forall (m :: Type -> Type) a. Set ComponentID -> DynamicQuery m a -> (Node m -> Bool) -> System m (Vector a) Source #
Match all entities with a dynamic query and filter.
readQuerySingleMaybeDyn :: forall (m :: Type -> Type) a. Set ComponentID -> DynamicQuery m a -> System m (Maybe a) Source #
runQueryDyn :: forall (m :: Type -> Type) a. Set ComponentID -> DynamicQuery m a -> System m (Vector a) Source #
Map all entities with a dynamic query.
runQueryFilteredDyn :: forall (m :: Type -> Type) a. Set ComponentID -> (Node m -> Bool) -> DynamicQuery m a -> System m (Vector a) Source #
Filter and map all entities with a dynamic query.
runQuerySingleMaybeDyn :: forall (m :: Type -> Type) a. Set ComponentID -> DynamicQuery m a -> System m (Maybe a) Source #
Map a single entity with a dynamic query.