aztecs-0.16.0: A modular game engine and Entity-Component-System (ECS) for Haskell.
Copyright(c) Matt Hunzinger 2025
LicenseBSD-style (see the LICENSE file in the distribution)
Maintainermatt@hunzinger.me
Stabilityprovisional
Portabilitynon-portable (GHC extensions)
Safe HaskellNone
LanguageHaskell2010

Aztecs.ECS.System

Description

 
Synopsis

Systems

newtype System (m :: Type -> Type) a Source #

System for querying entities.

Constructors

System 

Instances

Instances details
Applicative (System m) Source # 
Instance details

Defined in Aztecs.ECS.System

Methods

pure :: a -> System m a #

(<*>) :: System m (a -> b) -> System m a -> System m b #

liftA2 :: (a -> b -> c) -> System m a -> System m b -> System m c #

(*>) :: System m a -> System m b -> System m b #

(<*) :: System m a -> System m b -> System m a #

Functor (System m) Source # 
Instance details

Defined in Aztecs.ECS.System

Methods

fmap :: (a -> b) -> System m a -> System m b #

(<$) :: a -> System m b -> System m a #

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

Instances details
Applicative (DynamicSystem m) Source # 
Instance details

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 # 
Instance details

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.

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.