Struct bevy_ecs::entity::SceneEntityMapper

source ·
pub struct SceneEntityMapper<'m> { /* private fields */ }
Expand description

A wrapper for EntityHashMap<Entity>, augmenting it with the ability to allocate new Entity references in a destination world. These newly allocated references are guaranteed to never point to any living entity in that world.

References are allocated by returning increasing generations starting from an internally initialized base Entity. After it is finished being used by MapEntities implementations, this entity is despawned and the requisite number of generations reserved.

Implementations§

source§

impl<'m> SceneEntityMapper<'m>

source

pub fn get_map(&'m self) -> &'m EntityHashMap<Entity>

Gets a reference to the underlying EntityHashMap<Entity>.

source

pub fn get_map_mut(&'m mut self) -> &'m mut EntityHashMap<Entity>

Gets a mutable reference to the underlying EntityHashMap<Entity>.

source

pub fn new(map: &'m mut EntityHashMap<Entity>, world: &mut World) -> Self

Creates a new SceneEntityMapper, spawning a temporary base Entity in the provided World

source

pub fn finish(self, world: &mut World)

Reserves the allocated references to dead entities within the world. This frees the temporary base Entity while reserving extra generations via crate::entity::Entities::reserve_generations. Because this renders the SceneEntityMapper unable to safely allocate any more references, this method takes ownership of self in order to render it unusable.

source

pub fn world_scope<R>( entity_map: &'m mut EntityHashMap<Entity>, world: &mut World, f: impl FnOnce(&mut World, &mut Self) -> R ) -> R

Creates an SceneEntityMapper from a provided World and EntityHashMap<Entity>, then calls the provided function with it. This allows one to allocate new entity references in this World that are guaranteed to never point at a living entity now or in the future. This functionality is useful for safely mapping entity identifiers that point at entities outside the source world. The passed function, f, is called within the scope of this world. Its return value is then returned from world_scope as the generic type parameter R.

Trait Implementations§

source§

impl EntityMapper for SceneEntityMapper<'_>

source§

fn map_entity(&mut self, entity: Entity) -> Entity

Returns the corresponding mapped entity or reserves a new dead entity ID in the current world if it is absent.

Auto Trait Implementations§

§

impl<'m> Freeze for SceneEntityMapper<'m>

§

impl<'m> RefUnwindSafe for SceneEntityMapper<'m>

§

impl<'m> Send for SceneEntityMapper<'m>

§

impl<'m> Sync for SceneEntityMapper<'m>

§

impl<'m> Unpin for SceneEntityMapper<'m>

§

impl<'m> !UnwindSafe for SceneEntityMapper<'m>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Downcast for T
where T: Any,

source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> ConditionalSend for T
where T: Send,