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.World.Archetypes

Description

 
Synopsis

Documentation

data Node (m :: Type -> Type) Source #

Node in Archetypes.

Constructors

Node 

Fields

Instances

Instances details
Generic (Node m) Source # 
Instance details

Defined in Aztecs.ECS.World.Archetypes.Internal

Associated Types

type Rep (Node m) 
Instance details

Defined in Aztecs.ECS.World.Archetypes.Internal

type Rep (Node m) = D1 ('MetaData "Node" "Aztecs.ECS.World.Archetypes.Internal" "aztecs-0.16.0-1t3LRuVnzUqKpg58E4sSVq" 'False) (C1 ('MetaCons "Node" 'PrefixI 'True) (S1 ('MetaSel ('Just "nodeComponentIds") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Set ComponentID)) :*: S1 ('MetaSel ('Just "nodeArchetype") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Archetype m))))

Methods

from :: Node m -> Rep (Node m) x #

to :: Rep (Node m) x -> Node m #

Show (Node m) Source # 
Instance details

Defined in Aztecs.ECS.World.Archetypes.Internal

Methods

showsPrec :: Int -> Node m -> ShowS #

show :: Node m -> String #

showList :: [Node m] -> ShowS #

type Rep (Node m) Source # 
Instance details

Defined in Aztecs.ECS.World.Archetypes.Internal

type Rep (Node m) = D1 ('MetaData "Node" "Aztecs.ECS.World.Archetypes.Internal" "aztecs-0.16.0-1t3LRuVnzUqKpg58E4sSVq" 'False) (C1 ('MetaCons "Node" 'PrefixI 'True) (S1 ('MetaSel ('Just "nodeComponentIds") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Set ComponentID)) :*: S1 ('MetaSel ('Just "nodeArchetype") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Archetype m))))

data Archetypes (m :: Type -> Type) Source #

Constructors

Archetypes 

Fields

Instances

Instances details
Generic (Archetypes m) Source # 
Instance details

Defined in Aztecs.ECS.World.Archetypes.Internal

Associated Types

type Rep (Archetypes m) 
Instance details

Defined in Aztecs.ECS.World.Archetypes.Internal

type Rep (Archetypes m) = D1 ('MetaData "Archetypes" "Aztecs.ECS.World.Archetypes.Internal" "aztecs-0.16.0-1t3LRuVnzUqKpg58E4sSVq" 'False) (C1 ('MetaCons "Archetypes" 'PrefixI 'True) ((S1 ('MetaSel ('Just "nodes") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map ArchetypeID (Node m))) :*: S1 ('MetaSel ('Just "archetypeIds") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map (Set ComponentID) ArchetypeID))) :*: (S1 ('MetaSel ('Just "nextArchetypeId") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ArchetypeID) :*: S1 ('MetaSel ('Just "componentIds") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map ComponentID (Set ArchetypeID))))))

Methods

from :: Archetypes m -> Rep (Archetypes m) x #

to :: Rep (Archetypes m) x -> Archetypes m #

Show (Archetypes m) Source # 
Instance details

Defined in Aztecs.ECS.World.Archetypes.Internal

type Rep (Archetypes m) Source # 
Instance details

Defined in Aztecs.ECS.World.Archetypes.Internal

type Rep (Archetypes m) = D1 ('MetaData "Archetypes" "Aztecs.ECS.World.Archetypes.Internal" "aztecs-0.16.0-1t3LRuVnzUqKpg58E4sSVq" 'False) (C1 ('MetaCons "Archetypes" 'PrefixI 'True) ((S1 ('MetaSel ('Just "nodes") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map ArchetypeID (Node m))) :*: S1 ('MetaSel ('Just "archetypeIds") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map (Set ComponentID) ArchetypeID))) :*: (S1 ('MetaSel ('Just "nextArchetypeId") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ArchetypeID) :*: S1 ('MetaSel ('Just "componentIds") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Map ComponentID (Set ArchetypeID))))))

empty :: forall (m :: Type -> Type). Archetypes m Source #

Empty Archetypes.

insertArchetype :: forall (m :: Type -> Type). Set ComponentID -> Node m -> Archetypes m -> (ArchetypeID, Archetypes m) Source #

Insert an archetype by its set of ComponentIDs.

lookupArchetypeId :: forall (m :: Type -> Type). Set ComponentID -> Archetypes m -> Maybe ArchetypeID Source #

Lookup an ArchetypeID by its set of ComponentIDs.

findArchetypeIds :: forall (m :: Type -> Type). Set ComponentID -> Archetypes m -> Set ArchetypeID Source #

Find ArchetypeIDs containing a set of ComponentIDs.

lookup :: forall (m :: Type -> Type). ArchetypeID -> Archetypes m -> Maybe (Node m) Source #

Lookup an Archetype by its ArchetypeID.

find :: forall (m :: Type -> Type). Set ComponentID -> Archetypes m -> Map ArchetypeID (Node m) Source #

Lookup Archetypes containing a set of ComponentIDs.

map :: forall (m :: Type -> Type) a. Set ComponentID -> (Archetype m -> (a, Archetype m)) -> Archetypes m -> ([a], Archetypes m) Source #

Map over Archetypes containing a set of ComponentIDs.

adjustArchetype :: forall (m :: Type -> Type). ArchetypeID -> (Archetype m -> Archetype m) -> Archetypes m -> Archetypes m Source #

Adjust an Archetype by its ArchetypeID.

insert :: forall (m :: Type -> Type). Monad m => EntityID -> ArchetypeID -> Set ComponentID -> DynamicBundle m -> Archetypes m -> (Maybe ArchetypeID, Archetypes m, Access m ()) Source #

Insert a component into an entity with its ComponentID.

remove :: forall (m :: Type -> Type) a. Component m a => EntityID -> ArchetypeID -> ComponentID -> Archetypes m -> (Maybe (a, ArchetypeID), Archetypes m, Access m ()) Source #

Remove a component from an entity with its ComponentID.