úÎfÂ\€­      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬None ÿ­7Generate tuple instances for the following tuple sizes.­®None+;<=>?FKQTV© +Returns an unboxed vector of member indices )Destroys the component for a given index. Writes a componentStores that support get and exists in the IO monad If existsIOaReads a component from the store. What happens if the component does not exist is left undefined.8Returns whether there is a component for the given index$Holds components indexed by entities7Initialize the store with its initialization arguments.(The type of components stored by a StoreA 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.CAn Entity is just an integer, used to index into a component store.,/Pseudostore used to produce components of type Entity2+Pseudostore used to produce values of type Maybe a4+Pseudostore used to produce values of type Not a6*Psuedocomponent indicating the absence of a.& ,-./01234567k   !#"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<6745fedc23jihg01./mlk,-pon   ,-./01234567None ;<=>?Vij-5 sRun a system with a game worldtRun a system with a game worldvÓ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'w/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.x)Maps a function over all entities with a cx, and writes their cyyDMonadically iterates over all entites with a cx, and writes their cyz/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 stuvwxyz{|}~ stuvwxyz{|}~None-;<=>?FTVhij:`œA cache around another store. Note that iterating over a cache is linear in cache size, so sparsely populated caches might actually decrease performance.€mAn empty type class indicating that the store behaves like a regular map, and can therefore safely be cached.=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.‚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.ƒA map based on Data.Intmap.Strict . O(log(n)) for most operations.€‚ƒƒ‚€°±‚²ƒ³None;<=>?V>˜˜¨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.™Parallel version of cmap. ™Entities per thread˜™˜™None;<=>?FKTVijRÊ šuComponent used by newEntity to track the number of issued entities. Automatically added to any world created with  makeWorld›jConvenience entity (-1), used in places where the exact entity value does not matter, i.e. a global store.œ,Bumps the EntityCounter and yields its valuehWrites the given components to a new entity, and yields that entity. The return value is often ignored.ž'Explicitly invoke the garbage collectorŸ“Quantize turns a world-space coordinate into a table-space coordinate by dividing by the given cell size and rounding towards negative infinity. |Turns a table-space vector into an integral index, given some table size vector. Yields Nothing for out-of-bounds queries¡RTests whether a vector is in the region given by 0 and the size vector (inclusive)¢œ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.£6flatten, but yields garbage for out-of-bounds vectors.¤5Runs a system and gives its execution time in seconds¥KRuns a system, discards its output, and gives its execution time in secondsŸQuantization cell sizeVector to be quantized¢Lower bound for the regionHigher bound for the region š›œžŸ ¡¢£¤¥ ž›šœŸ ¡¢£¤¥š´µNoneZæªSame as ¬ , but has no š«7Same as makeWorld, but also makes a component instance:¬ 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|ª«¬¬ª«None[6+¶·¸¹º67stuvwxyz{|}‚ƒš›ž«¬&67ƒ‚uv{xyz}|wstžš›¬«»  !"#$%&''())*+,-./01234567899::;;<<==>>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ ¶·†ˆ‰Š¡¸ ¹º ¹» ¹» ¹¼ ¹¼½$apecs-0.4.0.0-L7YGqNxMm6xDAo8EOE6Rx3Apecs 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.ClassasksaskDestroyMembersSetGet ExplMembers explMembers ExplDestroy explDestroyExplSetexplSetExplGetexplGet explExistsExplInitexplInitElemHasgetStore ComponentStorageSystemunSystemEntityunEntity$fComponentIdentity$fHaswIdentity$fExplGetIdentity$fExplSetIdentity$fExplDestroyIdentity$fExplMembersIdentity $fNumEntity $fEqEntity $fOrdEntity $fShowEntity$fFunctorSystem $fMonadSystem$fApplicativeSystem$fMonadIOSystem EntityStore FilterStoreFilter MaybeStoreNotStoreNot$fExplMembers(,,,,,,,)$fExplDestroy(,,,,,,,)$fExplSet(,,,,,,,)$fExplGet(,,,,,,,)D:R:Elem(,,,,,,,)$fHasw(,,,,,,,)$fComponent(,,,,,,,)$fExplMembers(,,,,,,)$fExplDestroy(,,,,,,)$fExplSet(,,,,,,)$fExplGet(,,,,,,)$fHasw(,,,,,,)$fComponent(,,,,,,)$fExplMembers(,,,,,)$fExplDestroy(,,,,,)$fExplSet(,,,,,)$fExplGet(,,,,,) $fHasw(,,,,,)$fComponent(,,,,,)$fExplMembers(,,,,)$fExplDestroy(,,,,)$fExplSet(,,,,)$fExplGet(,,,,) $fHasw(,,,,)$fComponent(,,,,)$fExplMembers(,,,)$fExplDestroy(,,,)$fExplSet(,,,)$fExplGet(,,,) $fHasw(,,,)$fComponent(,,,)$fExplMembers(,,)$fExplDestroy(,,) $fExplSet(,,) $fExplGet(,,) $fHasw(,,)$fComponent(,,)$fExplMembers(,)$fExplDestroy(,) $fExplSet(,) $fExplGet(,) $fHasw(,)$fComponent(,)$fExplSetNotStore$fExplGetNotStore $fHaswNot$fComponentNot$fExplSetMaybeStore$fExplGetMaybeStore $fHaswMaybe$fComponentMaybe$fExplGetFilterStore $fHaswFilter$fComponentFilter$fExplGetEntityStore $fHaswEntity$fComponentEntity $fEqFilter $fShowFilter runSystemrunWithgetsetexistscmapcmapMcmapM_getAlldestroymodifycountCacheCachableGlobalUniqueMap$fExplMembersMap$fExplDestroyMap $fExplSetMap $fExplGetMap $fExplInitMap$fExplMembersUnique$fExplDestroyUnique$fExplSetUnique$fExplGetUnique$fExplInitUnique$fExplSetGlobal$fExplGetGlobal$fExplInitGlobal $fCachableMap$fExplMembersCache$fExplDestroyCache$fExplSetCache$fExplGetCache$fExplInitCache$fCachableCache concurrentlypmap EntityCounterglobal nextEntity newEntityrunGCquantizeflatteninboundsregionflatten' timeSystem timeSystem_$fComponentEntityCounter$fMonoidEntityCounter$fEqEntityCounter$fShowEntityCounter makeWorldNoECmakeWorldAndComponents makeWorld makeInstancestupleInstancesGHC.Basemempty getCounter Data.Proxy asProxyTypeOfProxyKProxy