Ȫ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None*9:;<=DIORTCasts for entities and slices.Query that returns all members, equivalent to membersClasses of queries q" that can be performed on a store s. +Returns a slice of the results of the query #Class of storages for global values?A constraint that indicates that the runtime representation of c is c;Class of storages that associates components with entities..Return type for safe reads writes to the store+The type of components stored by this StoreDUnsafe index to the store. Undefined if the component does not exist$Retrieves a component from the storeWrites a component$Either writes or deletes a component!Modifies an element in the store.gMaps over all elements of this store. The default implementation can be replaced by an optimized oneRepresents a safe access to cO. A safe access is either a read that might fail, or a write that might delete.$A store that is indexed by entities. +Destroys the component for the given index.!8Returns whether there is a component for the given index"+Returns an unboxed vector of member indices#[Removes all components. Default implementation iterates over members and calls explDestroy.$(Monadically iterates over member indices%(Monadically iterates over member indices&ICommon for every storage. Represents a container that can be initialized.'2The initialization argument required by this store)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 in instance of Initializable.-5A system is a newtype around `ReaderT w IO a`, where w is the game world variable.0JA slice is a list of entities, represented by a Data.Unbox.Vector of Ints.3uAn Entity is really just an Int. The type variable is used to keep track of reads and writes, but can be freely cast.A  !"#$%&'()*+,-./0123456789:;<=>?@ABCD2  !"#$%&'()*+,-./012345A345012-./+,)*&'( !"#$%  DCBA@?>=<;:9876    !"#$%&'()*+,-./0123456789:;<=>?@ABCDNone*9:;<=DORTghNRun a system with a game worldORun a system with a game worldP/A slice containing all entities with component cQ/Returns whether the given entity has component c^ For composite components, this indicates whether the component has all its constituentsRDestroys the component c for the given entityS]Removes all components. Equivalent to manually iterating and deleting, but usually optimized.T|Gets the component for a given entity. This is a safe access, because the entity might not have the requested components.UIWrites a component to a given entity. Will overwrite existing components.VSame as set., but uses Safe to possibly delete a componentW~Applies a function if possible. Equivalent to reading, mapping, and writing, but stores can provide optimized implementations.XMonadically iterate a system over all entities that have that component. Note that writing to the store while iterating over it is undefined behaviour.YMonadically iterate a system over all entities that have that component. Note that writing to the store while iterating over it is undefined behaviour.Z(Maps a pure function over all components[mapM_ version of cmap\.indexed cmapM_, also gives the current entity.];mapM version of cmap. Can be used to get a list of entities^-indexed cmapM, also gives the current entity._0Maps a function that might delete its components`)Maps a function over all entities with a r, and writes their wa)Maps a function over all entities with a r, and writes or deletes their wbFor all entities with a w, this map reads their r and writes their wcFor all entities with a w, this map reads their r and writes or deletes their wdPerforms a queryeReads a global valuefWrites a global valuegModifies a global valueNOPQRSTUVWXYZ[\]^_`abcdefgNOPQRSTUVWXYZ[\]^_`abcdefgNOPQRSTUVWXYZ[\]^_`abcdefgNOPQRSTUVWXYZ[\]^_`abcdefgNone*,9:;<=DORTfgh hpA table that keeps a hashtable of indices along with its writes. TODO: Benchmark? hashing function as argument?i1A query to an IndexTable by a reference componentk-A query to an IndexTable by an explicit indexmA component that can be hashed to a table index. minBound must hash to the lowest possible value, maxBound must hash to the highest. For Enums, toIndex = fromEnumoA cache around another store. The wrapped store must produce safe representations using Maybe. Note that iterating over a cache is linear in its size, so large, sparsely populated caches will actually decrease performance.pBGlobal value. Must be given an initial value upon construction.5Constant value. Not very practical, but fun to write.q@A store that keeps membership, but holds no values. Produces flag runtime values.rClass for flags, used by Set" to yield runtime representations.toA map from Data.Intmap.Strict. O(n log(n)) for most operations. Yields safe runtime representations of type Maybe c.*hijklmnopqrstuvwxyz{|}~ hijklmnopqrst tqrsophmnklijhijklmnopqrstuvwxyz{|}~None9:;<=DIRTgh Sequentially performs a series of queries and concatenates their result. Especially useful when iterating over an IndexTable!Secretly just an int in a newtype^Initializes a store with (), useful since most stores have () as their initialization argumentInitialize an EntityCounter,Bumps the EntityCounter and yields its valueCWrites the given components to a new entity, and yields that entity'Explicitly invoke the garbage collectorThe following functions are for spatial hashing. The idea is that your spatial hash is defined by two vectors; - The cell size vector contains real components and dictates how large each cell in your table is spatially. It is used to translate from world-space to table space - The field size vector contains integral components and dictates how many cells your field consists of in each direction. It is used to translate from table-space to a flat integerQuantize turns a world-space coordinate into a table-space coordinate by dividing by the given cell size and round components towards negative infinityFor 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.MTurns a table-space vector into a linear index, given some table size vector.FTests whether a vector is in the region given by 0 and the size vector5Runs a system and gives its execution time in secondsKRuns a system, discards its output, and gives its execution time in secondsQuantization cell sizeVector to be quantizedLower bound for the regionHigher bound for the regionNone9:;TSlice version of foldM_Gets the size of a slice (O(n))%Tests whether a slice is empty (O(1))$Construct a slice from a list of IDsMonadically filter a slice.Concatenates two slices. Equivalent to mappendSlice version of forM_Slice version of forMMIterates over a slice, and reads the components of the Slice's type argument.MIterates over a slice, and reads the components of the Slice's type argument.Slice version of mapM_Slice version of mapMMIterates over a slice, and reads the components of the Slice's type argument.MIterates over a slice, and reads the components of the Slice's type argument.None:<()*+,-./0345NOPQRSTUVWZ[\]^_`abcdefg.-./+,3450)*(RQPSTUVWZ][^\a`bc_efgdNO   !"#$%&'(()*+,-./01234567889::;<<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqqrrstuvwxyz{|}~puvwz$apecs-0.2.0.2-AjEJf2LIUAz5LUoGwzLE9uApecs Apecs.Types Apecs.System Apecs.Stores Apecs.Util Apecs.SlicebaseControl.Monad.IO.ClassliftIOtransformers-0.5.2.0Control.Monad.Trans.Classlift mtl-2.2.1-BLKBelFsPB3BoFeSWSOYj6Control.Monad.Reader.ClassasksaskCastcastAllQuery explSliceGlobalRWexplGlobalReadexplGlobalWriteexplGlobalModify IsRuntimeStoreSafeRWStores explGetUnsafeexplGetexplSet explSetMaybe explModifyexplCmap explCmapM_ explCimapM_ explCmapM explCimapMSafegetSafe HasMembers explDestroy explExists explMembers explReset explImapM_ explImapM InitializableInitArgs initStoreWithHasgetStore ComponentStorageSystemunSystemSliceunSliceEntityunEntity$fGlobalRW(,,)(,,) $fStore(,,)$fHasMembers(,,)$fInitializable(,,) $fHasw(,,)$fComponent(,,)$fGlobalRW(,)(,) $fStore(,)$fHasMembers(,)$fInitializable(,) $fHasw(,)$fComponent(,)$fCastSliceSlice$fCastEntityEntity $fQueryAlls $fEqEntity $fOrdEntity $fShowEntity $fShowSlice $fMonoidSlice$fFunctorSystem $fMonadSystem$fApplicativeSystem$fMonadIOSystem runSystemrunWithownersexistsdestroy resetStoregetset setOrDeletemodifyimapM_imapMcmapcmapM_cimapM_cmapMcimapMcmap'rmaprmap'wmapwmap'slice readGlobal writeGlobal modifyGlobal IndexTable ByComponentByIndexToIndextoIndexCacheGlobalSetFlagflagMap$fQueryByIndexIndexTable$fQueryByComponentIndexTable$fStoreIndexTable$fHasMembersIndexTable$fInitializableIndexTable $fStoreCache$fHasMembersCache$fInitializableCache$fGlobalRWGlobalc$fInitializableGlobal $fStoreConst$fHasMembersConst$fGlobalRWConstc$fInitializableConst $fStoreSet$fHasMembersSet$fInitializableSet $fStoreMap$fHasMembersMap$fInitializableMap ConcatQueries EntityCounter initStore initCounter nextEntity newEntityrunGCquantizeregionflatteninbounds timeSystem timeSystem_$fQueryConcatQueriess$fComponentEntityCounter$fNumEntityCounter$fEqEntityCounter$fShowEntityCounter sliceFoldM_ sliceSize sliceNull sliceFromList sliceFilterM sliceConcat sliceForM_ sliceForM sliceForMC sliceForMC_ sliceMapM_ sliceMapM sliceMapMC sliceMapMC_Consttablewrapped