aztecs-0.11.0: src/Aztecs/ECS.hs
-- | Aztecs is a type-safe and friendly ECS for games and more.
--
-- An ECS is a modern approach to organizing your application state as a database,
-- providing patterns for data-oriented design and parallel processing.
--
-- The ECS architecture is composed of three main concepts:
--
-- === Entities
-- An entity is an object comprised of zero or more components.
-- In Aztecs, entities are represented by their `EntityID`, a unique identifier.
--
-- === Components
-- A `Component` holds the data for a particular aspect of an entity.
-- For example, a zombie entity might have a @Health@ and a @Transform@ component.
--
-- > newtype Position = Position Int deriving (Show)
-- > instance Component Position
-- >
-- > newtype Velocity = Velocity Int deriving (Show)
-- > instance Component Velocity
--
-- === Systems
-- A `System` is a pipeline that processes entities and their components.
module Aztecs.ECS
( module Aztecs.ECS.System,
module Aztecs.ECS.Query,
Access,
AccessT,
runAccessT,
runAccessT_,
Bundle,
bundle,
fromDynBundle,
DynamicBundle,
dynBundle,
Component (..),
EntityID,
spawn,
system,
concurrently,
World,
)
where
import Aztecs.ECS.Access
import Aztecs.ECS.Component
import Aztecs.ECS.Entity
import Aztecs.ECS.Query hiding (query, querySingle, querySingleMaybe, readQueryEntities)
import Aztecs.ECS.System hiding (concurrently)
import Aztecs.ECS.World (World)
import Aztecs.ECS.World.Bundle
import Aztecs.ECS.World.Bundle.Dynamic