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 / Resources 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
.
If a system attempts to access a component/resource that has not been
registered/added, it will panic when run. Add all components with
World::register
before running any systems. Also add all resources
with World::add_resource
.
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.
Also panics if the component is not registered with World::register
.
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.
Also panics if the component is not registered with World::register
.
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.
Additionally, LazyUpdate
will be merged.