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.Query.Dynamic

Description

 
Synopsis

Dynamic queries

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

Dynamic query for components by ID.

Constructors

DynamicQuery 

Fields

Instances

Instances details
Monad m => DynamicQueryF m (DynamicQuery m) Source # 
Instance details

Defined in Aztecs.ECS.Query.Dynamic

Monad m => Applicative (DynamicQuery m) Source # 
Instance details

Defined in Aztecs.ECS.Query.Dynamic

Methods

pure :: a -> DynamicQuery m a #

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

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

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

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

Functor m => Functor (DynamicQuery m) Source # 
Instance details

Defined in Aztecs.ECS.Query.Dynamic

Methods

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

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

class (Monad m, Functor f) => DynamicQueryF (m :: Type -> Type) (f :: Type -> Type) | f -> m where Source #

Dynamic query functor.

Methods

entity :: f EntityID Source #

Fetch the currently matched EntityID.

queryDyn :: Component m a => ComponentID -> f a Source #

Fetch a Component by its ComponentID.

queryMaybeDyn :: Component m a => ComponentID -> f (Maybe a) Source #

Try to query a Component by its ComponentID.

queryMapDyn :: Component m a => (a -> a) -> ComponentID -> f a Source #

Map over a Component by its ComponentID.

queryMapDyn_ :: Component m a => (a -> a) -> ComponentID -> f () Source #

Map over a Component by its ComponentID, ignoring any output.

queryMapDynM :: (Monad m, Component m a) => (a -> m a) -> ComponentID -> f a Source #

Map over a Component by its ComponentID with a monadic function.

queryMapDynWith :: Component m b => (a -> b -> b) -> ComponentID -> f a -> f b Source #

Map over a Component by its ComponentID with input.

queryMapDynWith_ :: Component m b => (a -> b -> b) -> ComponentID -> f a -> f () Source #

Map over a Component by its ComponentID with input, ignoring any output.

queryMapDynWithM :: (Monad m, Component m b) => (a -> b -> m b) -> ComponentID -> f a -> f b Source #

Map over a Component by its ComponentID with input and a monadic function.

queryMapDynWithAccum :: Component m c => (b -> c -> (a, c)) -> ComponentID -> f b -> f (a, c) Source #

Map over a Component by its ComponentID with input, returning a tuple of the result and the updated component.

queryMapDynWithAccumM :: (Monad m, Component m c) => (b -> c -> m (a, c)) -> ComponentID -> f b -> f (a, c) Source #

Map over a Component by its ComponentID with input and a monadic function, returning a tuple.

queryFilterMap :: (a -> Maybe b) -> f a -> f b Source #

Filter a query and map the results, constraining the query to entities that satisfy the predicate.

queryFilter :: (a -> Bool) -> f a -> f a Source #

Filter a query, constraining it to entities that satisfy the predicate.

queryUntracked :: f a -> f a Source #

Run a query without tracking changes.

Instances

Instances details
Monad m => DynamicQueryF m (Query m) Source # 
Instance details

Defined in Aztecs.ECS.Query

Methods

entity :: Query m EntityID Source #

queryDyn :: Component m a => ComponentID -> Query m a Source #

queryMaybeDyn :: Component m a => ComponentID -> Query m (Maybe a) Source #

queryMapDyn :: Component m a => (a -> a) -> ComponentID -> Query m a Source #

queryMapDyn_ :: Component m a => (a -> a) -> ComponentID -> Query m () Source #

queryMapDynM :: (Monad m, Component m a) => (a -> m a) -> ComponentID -> Query m a Source #

queryMapDynWith :: Component m b => (a -> b -> b) -> ComponentID -> Query m a -> Query m b Source #

queryMapDynWith_ :: Component m b => (a -> b -> b) -> ComponentID -> Query m a -> Query m () Source #

queryMapDynWithM :: (Monad m, Component m b) => (a -> b -> m b) -> ComponentID -> Query m a -> Query m b Source #

queryMapDynWithAccum :: Component m c => (b -> c -> (a, c)) -> ComponentID -> Query m b -> Query m (a, c) Source #

queryMapDynWithAccumM :: (Monad m, Component m c) => (b -> c -> m (a, c)) -> ComponentID -> Query m b -> Query m (a, c) Source #

queryFilterMap :: (a -> Maybe b) -> Query m a -> Query m b Source #

queryFilter :: (a -> Bool) -> Query m a -> Query m a Source #

queryUntracked :: Query m a -> Query m a Source #

Monad m => DynamicQueryF m (DynamicQuery m) Source # 
Instance details

Defined in Aztecs.ECS.Query.Dynamic

Running

readQueryDyn :: Monad m => Set ComponentID -> DynamicQuery m a -> Entities m -> m (Vector a) Source #

Match all entities.

readQueryFilteredDyn :: Monad m => Set ComponentID -> (Node m -> Bool) -> DynamicQuery m a -> Entities m -> m (Vector a) Source #

Match all entities with a filter.

readQuerySingleDyn :: (HasCallStack, Monad m) => Set ComponentID -> DynamicQuery m a -> Entities m -> m a Source #

Match a single entity.

readQuerySingleMaybeDyn :: Monad m => Set ComponentID -> DynamicQuery m a -> Entities m -> m (Maybe a) Source #

Match a single entity, or Nothing.

runQueryDyn :: Monad m => Set ComponentID -> DynamicQuery m a -> Entities m -> m (Vector a, Entities m, Access m ()) Source #

Map all matched entities.

runQueryFilteredDyn :: Monad m => Set ComponentID -> (Node m -> Bool) -> DynamicQuery m a -> Entities m -> m (Vector a, Entities m, Access m ()) Source #

Map all matched entities.

runQuerySingleDyn :: (HasCallStack, Monad m) => Set ComponentID -> DynamicQuery m a -> Entities m -> m (a, Entities m, Access m ()) Source #

Map a single matched entity.

runQuerySingleMaybeDyn :: Monad m => Set ComponentID -> DynamicQuery m a -> Entities m -> m (Maybe a, Entities m, Access m ()) Source #

Map a single matched entity, or Nothing.

Dynamic query filters