-- | 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, readQuery, readQueryEntities, ) import Aztecs.ECS.System hiding (concurrently) import Aztecs.ECS.World (World) import Aztecs.ECS.World.Bundle import Aztecs.ECS.World.Bundle.Dynamic