| 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.World.Observers
Description
Synopsis
- newtype ObserverID = ObserverID {
- unObserverId :: Int
- data Observers (m :: Type -> Type) = Observers {
- entityObservers' :: !(Map EntityID EntityObservers)
- globalObservers :: !(Map TypeRep (Set ObserverID))
- observerCallbacks :: !(Map ObserverID (DynamicObserver m))
- nextObserverId :: !ObserverID
- newtype EntityObservers = EntityObservers {}
- data DynamicObserver (m :: Type -> Type)
- = DynEntityObserver !(EntityID -> Dynamic -> m ())
- | DynEventObserver !(Dynamic -> m ())
- empty :: forall (m :: Type -> Type). Observers m
- insertEntityObserver :: (Typeable e, Monad m) => (EntityID -> e -> m ()) -> Observers m -> (ObserverID, Observers m)
- insertEventObserver :: (Typeable e, Monad m) => (e -> m ()) -> Observers m -> (ObserverID, Observers m)
- addEntityObserver :: forall (m :: Type -> Type) e. Typeable e => EntityID -> ObserverID -> Observers m -> Observers m
- addGlobalObserver :: forall (m :: Type -> Type) e. Typeable e => ObserverID -> Observers m -> Observers m
- lookupEntityObservers :: forall (m :: Type -> Type). TypeRep -> EntityID -> Observers m -> Set ObserverID
- lookupGlobalObservers :: forall (m :: Type -> Type). TypeRep -> Observers m -> Set ObserverID
- lookupCallback :: forall (m :: Type -> Type). ObserverID -> Observers m -> Maybe (DynamicObserver m)
- removeObserver :: forall (m :: Type -> Type). ObserverID -> Observers m -> Observers m
Documentation
newtype ObserverID Source #
Observer identifier
Constructors
| ObserverID | |
Fields
| |
Instances
data Observers (m :: Type -> Type) Source #
Global observer storage
Constructors
| Observers | |
Fields
| |
newtype EntityObservers Source #
Observers for a specific entity
Constructors
| EntityObservers | |
Fields | |
Instances
| Monoid EntityObservers Source # | |||||
Defined in Aztecs.ECS.World.Observers.Internal Methods mappend :: EntityObservers -> EntityObservers -> EntityObservers # mconcat :: [EntityObservers] -> EntityObservers # | |||||
| Semigroup EntityObservers Source # | |||||
Defined in Aztecs.ECS.World.Observers.Internal Methods (<>) :: EntityObservers -> EntityObservers -> EntityObservers # sconcat :: NonEmpty EntityObservers -> EntityObservers # stimes :: Integral b => b -> EntityObservers -> EntityObservers # | |||||
| Generic EntityObservers Source # | |||||
Defined in Aztecs.ECS.World.Observers.Internal Associated Types
Methods from :: EntityObservers -> Rep EntityObservers x # to :: Rep EntityObservers x -> EntityObservers # | |||||
| Show EntityObservers Source # | |||||
Defined in Aztecs.ECS.World.Observers.Internal Methods showsPrec :: Int -> EntityObservers -> ShowS # show :: EntityObservers -> String # showList :: [EntityObservers] -> ShowS # | |||||
| type Rep EntityObservers Source # | |||||
Defined in Aztecs.ECS.World.Observers.Internal type Rep EntityObservers = D1 ('MetaData "EntityObservers" "Aztecs.ECS.World.Observers.Internal" "aztecs-0.16.0-1t3LRuVnzUqKpg58E4sSVq" 'True) (C1 ('MetaCons "EntityObservers" 'PrefixI 'True) (S1 ('MetaSel ('Just "eventObservers") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map TypeRep (Set ObserverID))))) | |||||
data DynamicObserver (m :: Type -> Type) Source #
Dynamic observer callback
Constructors
| DynEntityObserver !(EntityID -> Dynamic -> m ()) | Entity observer callback |
| DynEventObserver !(Dynamic -> m ()) | Event observer callback |
insertEntityObserver :: (Typeable e, Monad m) => (EntityID -> e -> m ()) -> Observers m -> (ObserverID, Observers m) Source #
Insert an entity observer callback.
insertEventObserver :: (Typeable e, Monad m) => (e -> m ()) -> Observers m -> (ObserverID, Observers m) Source #
Insert an event observer callback.
addEntityObserver :: forall (m :: Type -> Type) e. Typeable e => EntityID -> ObserverID -> Observers m -> Observers m Source #
Add an observer to a specific entity for a given event type.
addGlobalObserver :: forall (m :: Type -> Type) e. Typeable e => ObserverID -> Observers m -> Observers m Source #
Add a global observer for a given event type.
lookupEntityObservers :: forall (m :: Type -> Type). TypeRep -> EntityID -> Observers m -> Set ObserverID Source #
Lookup all observer IDs for an entity and event type.
lookupGlobalObservers :: forall (m :: Type -> Type). TypeRep -> Observers m -> Set ObserverID Source #
Lookup all global observer IDs for an event type.
lookupCallback :: forall (m :: Type -> Type). ObserverID -> Observers m -> Maybe (DynamicObserver m) Source #
Lookup an observer callback by ID.
removeObserver :: forall (m :: Type -> Type). ObserverID -> Observers m -> Observers m Source #
Remove an observer by ID.