Struct specs::World
[−]
[src]
pub struct World {
pub res: Resources,
// some fields omitted
}The World struct contains the component storages and
other resources.
Many methods take &self which works because everything
is stored with interior mutability. In case you violate
the borrowing rules of Rust (multiple reads xor one write),
you will get a panic.
Component / Resource ids
Components and resources may, in addition to their type, be identified
by an id of type usize. The convenience methods dealing
with components assume that it's 0.
Fields
res: Resources
The resources used for this world.
Methods
impl World[src]
fn new() -> World
Creates a new empty World.
fn register<T: Component>(&mut self)
Registers a new component.
Calls register_with_id with id 0, which
is the default for component ids.
Does nothing if the component was already registered.
fn register_with_id<T: Component>(&mut self, id: usize)
Registers a new component with a given id.
Does nothing if the component was already registered.
fn add_resource<T: Resource>(&mut self, res: T)
Adds a resource with the default ID (0).
If the resource already exists it will be overwritten.
fn add_resource_with_id<T: Resource>(&mut self, res: T, id: usize)
Adds a resource with a given ID.
If the resource already exists it will be overwritten.
fn read<T: Component>(&self) -> ReadStorage<T>
Fetches a component's storage with the default id for reading.
Convenience method for read_with_id, using the default component
id (0).
Panics
Panics if it is already borrowed mutably.
fn write<T: Component>(&self) -> WriteStorage<T>
Fetches a component's storage with the default id for writing.
Convenience method for write_with_id, using the default component
id (0).
Panics
Panics if it is already borrowed.
fn read_with_id<T: Component>(&self, id: usize) -> ReadStorage<T>
Fetches a component's storage with a specified id for reading.
Panics
Panics if it is already borrowed mutably.
fn write_with_id<T: Component>(&self, id: usize) -> WriteStorage<T>
Fetches a component's storage with a specified id for writing.
Panics
Panics if it is already borrowed.
fn read_resource_with_id<T: Resource>(&self, id: usize) -> Fetch<T>
Fetches a resource with a specified id for reading.
Panics
Panics if it is already borrowed mutably.
fn write_resource_with_id<T: Resource>(&self, id: usize) -> FetchMut<T>
fn read_resource<T: Resource>(&self) -> Fetch<T>
Fetches a resource with the default id for reading.
Convenience method for read_resource_with_id, using the default component
id (0).
Panics
Panics if it is already borrowed mutably.
fn write_resource<T: Resource>(&self) -> FetchMut<T>
Fetches a resource with the default id for writing.
Convenience method for write_resource_with_id, using the default component
id (0).
Panics
Panics if it is already borrowed.
fn entities(&self) -> Fetch<EntitiesRes>
Convenience method for fetching entities.
Creation and deletion of entities with the Entities struct
are atomically, so the actual changes will be applied
with the next call to maintain().
fn create_entity(&mut self) -> EntityBuilder
Allows building an entity with its components.
fn create_iter(&mut self) -> CreateIter
Returns an iterator for entity creation. This makes it easy to create a whole collection of them.
Examples
use specs::World; let mut world = World::new(); let five_entities: Vec<_> = world.create_iter().take(5).collect();
fn delete_entity(&mut self, entity: Entity)
Deletes an entity and its components.
fn delete_entities(&mut self, delete: &[Entity])
Deletes the specified entities and their components.
fn is_alive(&self, e: Entity) -> bool
Checks if an entity is alive.
Please note that atomically created or deleted entities
(the ones created / deleted with the Entities struct)
are not handled by this method. Therefore, you
should have called maintain() before using this
method.
If you want to get this functionality before a maintain(),
you are most likely in a system; from there, just access the
Entities resource and call the is_alive method.
Panics
Panics if generation is dead.
fn maintain(&mut self)
Merges in the appendix, recording all the dynamically created and deleted entities into the persistent generations vector. Also removes all the abandoned components.