var searchIndex = {}; searchIndex["specs"] = {"doc":"# SPECS Parallel ECS","items":[[3,"Storage","specs","A wrapper around the masked storage and the generations vector.\nCan be used for safe lookup of components, insertions and removes.\nThis is what `World::read/write` locks for the user.",null,null],[3,"VecStorage","","Vec-based storage, stores the generations of the data in\norder to match with given entities. Supposed to have maximum\nperformance for the components mostly present in entities.",null,null],[3,"HashMapStorage","","HashMap-based storage. Best suited for rare components.",null,null],[3,"World","","The `World` struct contains all the data, which is entities and their components.\nAll methods are supposed to be valid for any context they are available in.",null,null],[3,"EntityBuilder","","Helper builder for entities.",null,null],[3,"Entities","","A custom entity guard used to hide the the fact that Generations\nis lazily created and updated. For this to be useful it _must_\nbe joined with a component. This is because the Generation table\nincludes every possible Generation of Entities even if they\nhave never been",null,null],[3,"CreateEntities","","Entity creation iterator. Will yield new empty entities infinitely.\nUseful for bulk entity construction, since the locks are only happening once.",null,null],[3,"BitSetAnd","","`BitSetAnd` takes two `BitSetLike` items, and merges the masks\nreturning a new virtual set, which represents an intersection of the\ntwo original sets.",null,null],[12,"0","","",0,null],[12,"1","","",0,null],[3,"BitSet","","A `BitSet` is a simple set designed to track entity indices for which\na certain component exists. It does not track the `Generation` of the\nentities that it contains.",null,null],[3,"AtomicBitSet","","This is similar to a `BitSet` but allows setting of value\nwithout unique ownership of the structure",null,null],[3,"JoinIter","","`JoinIter` is an Iterator over a group of `Storages`.",null,null],[3,"Generation","","Index generation. When a new entity is placed at an old index,\nit bumps the `Generation` by 1. This allows to avoid using components\nfrom the entities that were deleted.",null,null],[3,"Entity","","`Entity` type, as seen by the user.",null,null],[3,"RunArg","","System closure run-time argument.",null,null],[3,"SystemInfo","","System information package, where the system itself is accompanied\nby its name and priority.",null,null],[12,"name","","Name of the system. Can be used for lookups or debug output.",1,null],[12,"priority","","Priority of the system.",1,null],[12,"object","","System trait object itself.",1,null],[3,"Planner","","System execution planner. Allows running systems via closures,\ndistributes the load in parallel using a thread pool.",null,null],[12,"world","","Shared `World`.",2,null],[12,"systems","","Permanent systems in the planner.",2,null],[11,"new","","Create a new `Storage`",3,{"inputs":[{"name":"a"},{"name":"d"}],"output":{"name":"storage"}}],[11,"get","","Tries to read the data associated with an `Entity`.",3,null],[11,"get_mut","","Tries to mutate the data associated with an `Entity`.",3,null],[11,"insert","","Inserts new data for a given `Entity`.\nReturns false if the entity is dead, and insertion is not possible.",3,null],[11,"remove","","Removes the data associated with an `Entity`.",3,null],[11,"new","","",4,{"inputs":[],"output":{"name":"self"}}],[11,"clean","","",4,null],[11,"get","","",4,null],[11,"get_mut","","",4,null],[11,"insert","","",4,null],[11,"remove","","",4,null],[11,"new","","",5,{"inputs":[],"output":{"name":"self"}}],[11,"clean","","",5,null],[11,"get","","",5,null],[11,"get_mut","","",5,null],[11,"insert","","",5,null],[11,"remove","","",5,null],[11,"with","","Adds a `Component` value to the new `Entity`.",6,null],[11,"build","","Finishes entity construction.",6,null],[11,"next","","",7,null],[11,"new","","Creates a new empty `World`.",8,{"inputs":[],"output":{"name":"world"}}],[11,"register","","Registers a new component type.",8,null],[11,"unregister","","Unregisters a component type.",8,null],[11,"read","","Locks a component's storage for reading.",8,null],[11,"write","","Locks a component's storage for writing.",8,null],[11,"entities","","Returns the entity iterator.",8,null],[11,"create_iter","","Returns the entity creation iterator. Can be used to create many\nempty entities at once without paying the locking overhead.",8,null],[11,"create_now","","Creates a new entity instantly, locking the generations data.",8,null],[11,"delete_now","","Deletes a new entity instantly, locking the generations data.",8,null],[11,"create_later","","Creates a new entity dynamically.",8,null],[11,"delete_later","","Deletes an entity dynamically.",8,null],[11,"is_alive","","Returns `true` if the given `Entity` is alive.",8,null],[11,"maintain","","Merges in the appendix, recording all the dynamically created\nand deleted entities into the persistent generations vector.\nAlso removes all the abandoned components.",8,null],[11,"clone","","",9,null],[11,"new","","Creates an empty `BitSet`.",9,{"inputs":[],"output":{"name":"bitset"}}],[11,"with_capacity","","Creates an empty `BitSet`, preallocated for up to `max` indices.",9,{"inputs":[{"name":"index"}],"output":{"name":"bitset"}}],[11,"add","","Adds `id` to the `BitSet`. Returns `true` if the value was\nalready in the set.",9,null],[11,"remove","","Removes `id` from the set, returns `true` if the value\nwas removed, and `false` if the value was not set\nto begin with.",9,null],[11,"contains","","Returns `true` if `id` is in the set.",9,null],[11,"layer3","","",9,null],[11,"layer2","","",9,null],[11,"layer1","","",9,null],[11,"layer0","","",9,null],[11,"layer3","","",0,null],[11,"layer2","","",0,null],[11,"layer1","","",0,null],[11,"layer0","","",0,null],[11,"new","","Creates an empty `BitSet`.",10,{"inputs":[],"output":{"name":"atomicbitset"}}],[11,"add_atomic","","Adds `id` to the `AtomicBitSet`. Returns `true` if the value was\nalready in the set.",10,null],[11,"add","","Adds `id` to the `BitSet`. Returns `true` if the value was\nalready in the set.",10,null],[11,"remove","","Removes `id` from the set, returns `true` if the value\nwas removed, and `false` if the value was not set\nto begin with.",10,null],[11,"contains","","Returns `true` if `id` is in the set.",10,null],[11,"clear","","Clear all bits in the set",10,null],[11,"layer3","","",10,null],[11,"layer2","","",10,null],[11,"layer1","","",10,null],[11,"layer0","","",10,null],[11,"new","","Create a new join iterator.",11,{"inputs":[{"name":"j"}],"output":{"name":"self"}}],[11,"next","","",11,null],[6,"Index","","`Index` type is arbitrary. It doesn't show up in any interfaces.\nKeeping it 32bit allows for a single 64bit word per entity.",null,null],[6,"Priority","","System scheduling priority. Higehr priority systems are started\nearlier than lower-priority ones.",null,null],[8,"UnprotectedStorage","","Used by the framework to quickly join componets",null,null],[10,"new","","Creates a new `Storage<T>`. This is called when you register a new\ncomponent type within the world.",12,{"inputs":[],"output":{"name":"self"}}],[10,"clean","","Clean the storage given a check to figure out if an index\nis valid or not. Allows us to safely drop the storage.",12,null],[10,"get","","Tries reading the data associated with an `Index`.\nThis is unsafe because the external set used\nto protect this storage is absent.",12,null],[10,"get_mut","","Tries mutating the data associated with an `Index`.\nThis is unsafe because the external set used\nto protect this storage is absent.",12,null],[10,"insert","","Inserts new data for a given `Index`.",12,null],[10,"remove","","Removes the data associated with an `Index`.",12,null],[8,"Component","","Abstract component type. Doesn't have to be Copy or even Clone.",null,null],[16,"Storage","","Associated storage type for this component.",13,null],[8,"BitSetLike","","A generic interface for `BitSet`-like types.",null,null],[10,"layer3","","Return a usize where each bit represents if any word in layer2\nhas been set.",14,null],[10,"layer2","","Return the usize from the array of usizes that indicates if any\nbit has been set in layer1",14,null],[10,"layer1","","Return the usize from the array of usizes that indicates if any\nbit has been set in layer0",14,null],[10,"layer0","","Return a usize that maps to the direct 1:1 association with\neach index of the set",14,null],[11,"iter","","Create an iterator that will scan over the keyspace",14,null],[8,"Join","","The purpose of the `Join` trait is to provide a way\nto access multiple storages at the same time with\nthe merged bit set.",null,null],[16,"Type","","Type of joined components.",15,null],[16,"Value","","Type of joined storages.",15,null],[16,"Mask","","Type of joined bit mask.",15,null],[11,"iter","","Create a joined iterator over the contents.",15,null],[10,"open","","Open this join by returning the mask and the storages.",15,null],[10,"get","","Get a joined component value by a gien index.",15,{"inputs":[{"name":"value"},{"name":"index"}],"output":{"name":"type"}}],[8,"System","","Generic system that runs through the entities and do something\nwith their components, with an ability to add new entities and\ndelete existing ones.",null,null],[10,"run","","Run the system, given its context.",16,null],[11,"partial_cmp","","",17,null],[11,"lt","","",17,null],[11,"le","","",17,null],[11,"gt","","",17,null],[11,"ge","","",17,null],[11,"eq","","",17,null],[11,"ne","","",17,null],[11,"cmp","","",17,null],[11,"hash","","",17,null],[11,"fmt","","",17,null],[11,"clone","","",17,null],[11,"is_alive","","Returns `true` if entities of this `Generation` are alive.",17,null],[11,"partial_cmp","","",18,null],[11,"lt","","",18,null],[11,"le","","",18,null],[11,"gt","","",18,null],[11,"ge","","",18,null],[11,"eq","","",18,null],[11,"ne","","",18,null],[11,"cmp","","",18,null],[11,"hash","","",18,null],[11,"fmt","","",18,null],[11,"clone","","",18,null],[11,"get_id","","Returns the index of the `Entity`.",18,null],[11,"get_gen","","Returns the `Generation` of the `Entity`.",18,null],[11,"fetch","","Borrows the world, allowing the system to lock some components and get the entity\niterator. Must be called only once.",19,null],[11,"create","","Creates a new entity dynamically.",19,null],[11,"delete","","Deletes an entity dynamically.",19,null],[11,"new","","Creates a new planner, given the world and the thread count.",2,{"inputs":[{"name":"world"},{"name":"usize"}],"output":{"name":"planner"}}],[11,"add_system","","Add a system to the dispatched list.",2,null],[11,"run_custom","","Runs a custom system.",2,null],[11,"wait","","Waits for all currently executing systems to finish, and then\nmerges all queued changes.",2,null],[11,"dispatch","","Dispatch all systems according to their associated priorities.",2,null],[11,"run0w1r","","",2,null],[11,"run0w2r","","",2,null],[11,"run0w3r","","",2,null],[11,"run0w4r","","",2,null],[11,"run1w0r","","",2,null],[11,"run1w1r","","",2,null],[11,"run1w2r","","",2,null],[11,"run1w3r","","",2,null],[11,"run1w4r","","",2,null],[11,"run1w5r","","",2,null],[11,"run1w6r","","",2,null],[11,"run1w7r","","",2,null],[11,"run2w0r","","",2,null],[11,"run2w1r","","",2,null],[11,"run2w2r","","",2,null],[11,"iter","","Create an iterator that will scan over the keyspace",14,null],[11,"iter","","Create a joined iterator over the contents.",15,null]],"paths":[[3,"BitSetAnd"],[3,"SystemInfo"],[3,"Planner"],[3,"Storage"],[3,"HashMapStorage"],[3,"VecStorage"],[3,"EntityBuilder"],[3,"CreateEntities"],[3,"World"],[3,"BitSet"],[3,"AtomicBitSet"],[3,"JoinIter"],[8,"UnprotectedStorage"],[8,"Component"],[8,"BitSetLike"],[8,"Join"],[8,"System"],[3,"Generation"],[3,"Entity"],[3,"RunArg"]]}; initSearch(searchIndex);