úÎbÉ[C€      !"#$%&'()*+,-./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,” 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\Get all components c . Call as  [(c,Entity)] to read the entity/index.]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-;<=>?FTVhij9¿`mAn empty type class indicating that the store behaves like a regular map, and can therefore safely be cached.aœA cache around another store. Note that iterating over a cache is linear in cache size, so sparsely populated caches might actually decrease performance.b=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.cA 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.dA map based on Data.Intmap.Strict . O(log(n)) for most operations.`abcddacb`aƒb„c…d†None;<=>?V=÷k¨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.lParallel version of cmap. lEntities per threadklklNone;<=>?FKTVijR muComponent used by newEntity to track the number of issued entities. Automatically added to any world created with  makeWorldnjConvenience entity (-1), used in places where the exact entity value does not matter, i.e. a global store.oConvenience proxy valuep,Bumps the EntityCounter and yields its valueqhWrites the given components to a new entity, and yields that entity. The return value is often ignored.r'Explicitly invoke the garbage collectors“Quantize turns a world-space coordinate into a table-space coordinate by dividing by the given cell size and rounding towards negative infinity.t|Turns a table-space vector into an integral index, given some table size vector. Yields Nothing for out-of-bounds queriesuRTests whether a vector is in the region given by 0 and the size vector (inclusive)vœ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.w6flatten, but yields garbage for out-of-bounds vectors.x5Runs a system and gives its execution time in secondsyKRuns a system, discards its output, and gives its execution time in secondssQuantization cell sizeVector to be quantizedvLower bound for the regionHigher bound for the region mnopqrstuvwxy rnompqstuvwxym‡ˆNoneYÍ~Same as  , but has no m 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|~~NoneZ% +,TUVWXYZ[\]^abcdmnoqr% +,dcbaVW\YZ[^]XTUrmqno‰  !!"#$%&'()*+,,--..//0011223456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ ˆ‰ghijsŠ‹$apecs-0.3.0.2-BOrn3yE5xIY41ZYSmgSaSIApecs 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_getAlldestroymodifycountCachableCacheGlobalUniqueMap $fStoreMap $fStoreUnique $fStoreGlobal $fStoreCache$fCachableCache $fCachableMap concurrentlypmap EntityCounterglobalproxy nextEntity newEntityrunGCquantizeflatteninboundsregionflatten' timeSystem timeSystem_$fComponentEntityCounter$fMonoidEntityCounter$fEqEntityCounter$fShowEntityCounter makeWorldNoEC makeWorld makeInstancestupleInstancesGHC.Basemempty getCounter