| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Mischief.ECS.Entities
Synopsis
- data Entity = Entity (# Word#, Word# #)
- data EntityPointer = EntityPointer (# Int#, Int# #)
- getPointer :: Entity -> Entities -> IO (Maybe (IORef EntityPointer))
- isAliveIO :: Entity -> Entities -> IO Bool
- data Entities
- data EntityCounter
- getNewEntity :: Entities -> IO Entity
- removeEntity :: Entity -> Entities -> IO ()
- insertPointer :: Entity -> IORef EntityPointer -> Entities -> IO ()
- getNewEntityComp :: Entities -> IO Entity
- emptyEntities :: IO Entities
Entity
UNLIFTED
Points to an unique entity. The first Word# is an id, the second is a generation.
It is guaranteed that there can't be two alive entities with the same id.
Instances
| Show Entity Source # | |
| Eq Entity Source # | |
| Ord Entity Source # | |
| Queryable E Entity Source # | |
| Component c => IntoQueryFilter (CheckR Entity c) Source # | |
Defined in Mischief.ECS.World.Query.QueryFilter Methods intoQueryFilter :: CheckR Entity c -> QueryFilter Source # | |
| Component c => EraseIntoStorage (R c Entity, c -> Bool) CheckFilterType Source # | |
Defined in Mischief.ECS.World.Query.QueryFilter | |
| Component c => EraseIntoStorage (R c Entity) FilterType Source # | |
Defined in Mischief.ECS.World.Query.QueryFilter | |
| Component c => Queryable (HasR c Entity) Bool Source # | |
| Component c => Queryable (MR c Entity) (Maybe (Result (Rel c))) Source # | |
Defined in Mischief.ECS.World.Query.Queryable | |
| Component c => Queryable (R c Entity) (Result (Rel c)) Source # | |
Defined in Mischief.ECS.World.Query.Queryable | |
data EntityPointer Source #
A pointer to the exact table and row that an entity is in.
The first Int# is the id of its archetype. The second is the index of the row it's in.
Constructors
| EntityPointer (# Int#, Int# #) |
getPointer :: Entity -> Entities -> IO (Maybe (IORef EntityPointer)) Source #
Get the pointer to an entity.
Storage
data EntityCounter Source #
A counter and a list for recycling entities.
insertPointer :: Entity -> IORef EntityPointer -> Entities -> IO () Source #
Associate an Entity with a new pointer.
getNewEntityComp :: Entities -> IO Entity Source #
Creates a new entity using a fresh id, never incrementing the generation of a previous one.
emptyEntities :: IO Entities Source #
Create a new storage for entities.