śĪalYō      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None©7Generate tuple instances for the following tuple sizes.€None;<=>?FKQTV $Holds components indexed by entitiesLaws:For all entities in exmplMembers s, explExists s ety must be true.If for some entity explExists s ety,  explGet s ety) should safely return a non-bottom value.+The type of components stored by this Store7Initialize the store with its initialization arguments.Writes a componentaReads a component from the store. What happens if the component does not exist is left undefined. )Destroys the component for a given index. +Returns an unboxed vector of member indices 8Returns whether there is a component for the given index A world  * a component if it can produce its Storage¾A component is defined by the type of its storage The storage in turn supplies runtime types for the component. For the component to be valid, its Storage must be an instance of Store.5A system is a newtype around `ReaderT w IO a`, where w is the game world variable.SAn Entity is really just an Int in a newtype, used to index into a component store./Pseudostore used to produce components of type Entity%+Pseudostore used to produce values of type  Either p q'+Pseudostore used to produce values of type Maybe a)+Pseudostore used to produce values of type Not a+*Psuedocomponent indicating the absence of a.   !"#$%&'()*+,F  ---------------------+,)*EDC'(HGF%&KJI#$!"NML QPO    !"#$%&'()*+,None ;<=>?Vij+U TRun a system with a game worldURun a system with a game worldWÓWrites a component to a given entity. Will overwrite existing components. The type was originally 'Entity c -> c -> System w ()', but is relaxed to 'Entity e' so you don't always have to write 'set . cast'X/Returns whether the given entity has component c Note that cQ is a phantom argument, used only to convey the type of the entity to be queried.Y)Maps a function over all entities with a cx, and writes their cyZ/Monadically iterates over all entites with a cx[/Monadically iterates over all entites with a cx\Destroys component c" for the given entity. Note that cS is a phantom argument, used only to convey the type of the entity to be destroyed.] Applies a function, if possible.^%Counts the number of entities with a c TUVWXYZ[\]^ TUVWXYZ[\]^None-;<=>?FTVhij8x_mAn empty type class indicating that the store behaves like a regular map, and can therefore safely be cached.`œA cache around another store. Note that iterating over a cache is linear in cache size, so sparsely populated caches might actually decrease performance.a=A Global contains exactly one component. Initialized with ¦ The store will return true for every existence check, but only ever gives (-1) as its inhabitant. The entity argument is ignored when setting/getting a global.bA Unique contains zero or one component. Writing to it overwrites both the previous component and its owner. Its main purpose is to be a Map8 optimized for when only ever one component inhabits it.cA map based on Data.Intmap.Strict . O(log(n)) for most operations._`abcc`ba_`‚aƒb„c…None;<=>?V<°jØExecutes a list of systems concurrently, and blocks until all have finished. Provides zero protection against race conditions and other hazards, so use with caution.kParallel version of cmap. kEntities per threadjkjkNone;<=>?FKTVijQF luComponent used by newEntity to track the number of issued entities. Automatically added to any world created with  makeWorldmjConvenience entity (-1), used in places where the exact entity value does not matter, i.e. a global store.nConvenience proxy valueo,Bumps the EntityCounter and yields its valuephWrites the given components to a new entity, and yields that entity. The return value is often ignored.q'Explicitly invoke the garbage collectorr“Quantize turns a world-space coordinate into a table-space coordinate by dividing by the given cell size and rounding towards negative infinity.s|Turns a table-space vector into an integral index, given some table size vector. Yields Nothing for out-of-bounds queriestRTests whether a vector is in the region given by 0 and the size vector (inclusive)uœFor two table-space vectors indicating a region's bounds, gives a list of the vectors contained between them. This is useful for querying a spatial hash.v6flatten, but yields garbage for out-of-bounds vectors.w5Runs a system and gives its execution time in secondsxKRuns a system, discards its output, and gives its execution time in secondsrQuantization cell sizeVector to be quantizeduLower bound for the regionHigher bound for the region lmnopqrstuvwx qmnloprstuvwxl†‡NoneX†}Same as ~ , but has no l~ 7makeWorld "WorldName" [''Component1, ''Component2, ...] turns into ’>data WorldName = WorldName Component1 Component2 ... EntityCounter instance WorldName `Has` Component1 where ... instance WorldName `Has` Component2 where ... ... instance WorldName `Has` EntityCounter where ... initWorldName :: IO WorldName initWorldName = WorldName <$> initStore <*> initStore <*> ... <*> initStore|}~~}NoneXĪ$ +,TUVWXYZ[\]`abclmnpq~$ +,cba`VWYZ[]\XTUqlpmn~ˆ  !!"#$%&'()*+,,--..//0011223456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…† ‡ˆfghir‰Š$apecs-0.3.0.1-BRncJ4RiurOE1VupHv7ZzRApecs Apecs.Core Apecs.System Apecs.StoresApecs.Concurrent Apecs.UtilApecs.THApecs.THTuplesbaseControl.Monad.IO.ClassliftIOtransformers-0.5.2.0Control.Monad.Trans.Classlift mtl-2.2.1-DscMMmDQUE6GBfOSl4qMUHControl.Monad.Reader.ClassasksaskStoreElem initStoreexplSetexplGet explDestroy explMembers explExistsHasgetStore ComponentStorageSystemunSystemEntity$fStoreIdentity$fComponentIdentity$fHaswIdentity $fEqEntity $fOrdEntity $fShowEntity$fFunctorSystem $fMonadSystem$fApplicativeSystem$fMonadIOSystem EntityStore FilterStoreFilter EitherStore MaybeStoreNotStoreNotD:R:Elem(,,,,,,,)$fStore(,,,,,,,)$fHasw(,,,,,,,)$fComponent(,,,,,,,)$fStore(,,,,,,)$fHasw(,,,,,,)$fComponent(,,,,,,)$fStore(,,,,,) $fHasw(,,,,,)$fComponent(,,,,,) $fStore(,,,,) $fHasw(,,,,)$fComponent(,,,,) $fStore(,,,) $fHasw(,,,)$fComponent(,,,) $fStore(,,) $fHasw(,,)$fComponent(,,) $fStore(,) $fHasw(,)$fComponent(,)$fStoreNotStore $fHaswNot$fComponentNot$fStoreMaybeStore $fHaswMaybe$fComponentMaybe$fStoreEitherStore $fHaswEither$fComponentEither$fStoreFilterStore $fHaswFilter$fComponentFilter$fStoreEntityStore $fHaswEntity$fComponentEntity $fEqFilter $fShowFilter runSystemrunWithgetsetexistscmapcmapMcmapM_destroymodifycountCachableCacheGlobalUniqueMap $fStoreMap $fStoreUnique $fStoreGlobal $fStoreCache$fCachableCache $fCachableMap concurrentlypmap EntityCounterglobalproxy nextEntity newEntityrunGCquantizeflatteninboundsregionflatten' timeSystem timeSystem_$fComponentEntityCounter$fMonoidEntityCounter$fEqEntityCounter$fShowEntityCounter makeWorldNoEC makeWorld makeInstancestupleInstancesGHC.Basemempty getCounter