| 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.Query.Dynamic
Description
Synopsis
- newtype DynamicQuery (m :: Type -> Type) a = DynamicQuery {
- runDynQuery :: Archetype m -> m (Vector a, Archetype m, Access m ())
- class (Monad m, Functor f) => DynamicQueryF (m :: Type -> Type) (f :: Type -> Type) | f -> m where
- entity :: f EntityID
- queryDyn :: Component m a => ComponentID -> f a
- queryMaybeDyn :: Component m a => ComponentID -> f (Maybe a)
- queryMapDyn :: Component m a => (a -> a) -> ComponentID -> f a
- queryMapDyn_ :: Component m a => (a -> a) -> ComponentID -> f ()
- queryMapDynM :: (Monad m, Component m a) => (a -> m a) -> ComponentID -> f a
- queryMapDynWith :: Component m b => (a -> b -> b) -> ComponentID -> f a -> f b
- queryMapDynWith_ :: Component m b => (a -> b -> b) -> ComponentID -> f a -> f ()
- queryMapDynWithM :: (Monad m, Component m b) => (a -> b -> m b) -> ComponentID -> f a -> f b
- queryMapDynWithAccum :: Component m c => (b -> c -> (a, c)) -> ComponentID -> f b -> f (a, c)
- queryMapDynWithAccumM :: (Monad m, Component m c) => (b -> c -> m (a, c)) -> ComponentID -> f b -> f (a, c)
- queryFilterMap :: (a -> Maybe b) -> f a -> f b
- queryFilter :: (a -> Bool) -> f a -> f a
- queryUntracked :: f a -> f a
- readQueryDyn :: Monad m => Set ComponentID -> DynamicQuery m a -> Entities m -> m (Vector a)
- readQueryFilteredDyn :: Monad m => Set ComponentID -> (Node m -> Bool) -> DynamicQuery m a -> Entities m -> m (Vector a)
- readQuerySingleDyn :: (HasCallStack, Monad m) => Set ComponentID -> DynamicQuery m a -> Entities m -> m a
- readQuerySingleMaybeDyn :: Monad m => Set ComponentID -> DynamicQuery m a -> Entities m -> m (Maybe a)
- runQueryDyn :: Monad m => Set ComponentID -> DynamicQuery m a -> Entities m -> m (Vector a, Entities m, Access m ())
- runQueryFilteredDyn :: Monad m => Set ComponentID -> (Node m -> Bool) -> DynamicQuery m a -> Entities m -> m (Vector a, Entities m, Access m ())
- runQuerySingleDyn :: (HasCallStack, Monad m) => Set ComponentID -> DynamicQuery m a -> Entities m -> m (a, Entities m, Access m ())
- runQuerySingleMaybeDyn :: Monad m => Set ComponentID -> DynamicQuery m a -> Entities m -> m (Maybe a, Entities m, Access m ())
- data DynamicQueryFilter = DynamicQueryFilter {
- filterWith :: !(Set ComponentID)
- filterWithout :: !(Set ComponentID)
Dynamic queries
newtype DynamicQuery (m :: Type -> Type) a Source #
Dynamic query for components by ID.
Constructors
| DynamicQuery | |
Fields
| |
Instances
class (Monad m, Functor f) => DynamicQueryF (m :: Type -> Type) (f :: Type -> Type) | f -> m where Source #
Dynamic query functor.
Minimal complete definition
entity, queryDyn, queryMapDyn, queryMapDynM, queryMapDynWith, queryMapDynWithM, queryMapDynWithAccum, queryMapDynWithAccumM, queryFilterMap, queryUntracked
Methods
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
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
data DynamicQueryFilter Source #
Dynamic query filter.
Constructors
| DynamicQueryFilter | |
Fields
| |
Instances
| Monoid DynamicQueryFilter Source # | |
Defined in Aztecs.ECS.Query.Dynamic Methods mempty :: DynamicQueryFilter # mappend :: DynamicQueryFilter -> DynamicQueryFilter -> DynamicQueryFilter # mconcat :: [DynamicQueryFilter] -> DynamicQueryFilter # | |
| Semigroup DynamicQueryFilter Source # | |
Defined in Aztecs.ECS.Query.Dynamic Methods (<>) :: DynamicQueryFilter -> DynamicQueryFilter -> DynamicQueryFilter # sconcat :: NonEmpty DynamicQueryFilter -> DynamicQueryFilter # stimes :: Integral b => b -> DynamicQueryFilter -> DynamicQueryFilter # | |