Struct ComponentCloneCtx

Source
pub struct ComponentCloneCtx<'a, 'b> { /* private fields */ }
Expand description

Context for component clone handlers.

Provides fast access to useful resources like AppTypeRegistry and allows component clone handler to get information about component being cloned.

Implementations§

Source§

impl<'a, 'b> ComponentCloneCtx<'a, 'b>

Source

pub fn target_component_written(&self) -> bool

Returns true if write_target_component was called before.

Source

pub fn source(&self) -> Entity

Returns the current source entity.

Source

pub fn target(&self) -> Entity

Returns the current target entity.

Source

pub fn component_id(&self) -> ComponentId

Returns the ComponentId of the component being cloned.

Source

pub fn component_info(&self) -> &ComponentInfo

Returns the ComponentInfo of the component being cloned.

Source

pub fn linked_cloning(&self) -> bool

Returns true if the EntityCloner is configured to recursively clone entities. When this is enabled, entities stored in a cloned entity’s RelationshipTarget component with RelationshipTarget::LINKED_SPAWN will also be cloned.

Source

pub fn entity_mapper(&mut self) -> &mut dyn EntityMapper

Returns this context’s EntityMapper.

Source

pub fn write_target_component<C>(&mut self, component: C)
where C: Component,

Writes component data to target entity.

§Panics

This will panic if:

  • Component has already been written once.
  • Component being written is not registered in the world.
  • ComponentId of component being written does not match expected ComponentId.
Source

pub unsafe fn write_target_component_ptr(&mut self, ptr: Ptr<'_>)

Writes component data to target entity by providing a pointer to source component data.

§Safety

Caller must ensure that the passed in ptr references data that corresponds to the type of the source / target ComponentId. ptr must also contain data that the written component can “own” (for example, this should not directly copy non-Copy data).

§Panics

This will panic if component has already been written once.

Source

pub fn write_target_component_reflect(&mut self, component: Box<dyn Reflect>)

Writes component data to target entity.

§Panics

This will panic if:

Source

pub fn type_registry(&self) -> Option<&AppTypeRegistry>

Returns AppTypeRegistry if it exists in the world.

NOTE: Prefer this method instead of manually reading the resource from the world.

Source

pub fn queue_entity_clone(&mut self, entity: Entity)

Queues the entity to be cloned by the current EntityCloner

Source

pub fn queue_deferred( &mut self, deferred: impl FnOnce(&mut World, &mut dyn EntityMapper) + 'static, )

Queues a deferred clone operation, which will run with exclusive World access immediately after calling the clone handler for each component on an entity. This exists, despite its similarity to Commands, to provide access to the entity mapper in the current context.

Auto Trait Implementations§

§

impl<'a, 'b> Freeze for ComponentCloneCtx<'a, 'b>

§

impl<'a, 'b> !RefUnwindSafe for ComponentCloneCtx<'a, 'b>

§

impl<'a, 'b> !Send for ComponentCloneCtx<'a, 'b>

§

impl<'a, 'b> !Sync for ComponentCloneCtx<'a, 'b>

§

impl<'a, 'b> Unpin for ComponentCloneCtx<'a, 'b>

§

impl<'a, 'b> !UnwindSafe for ComponentCloneCtx<'a, 'b>

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, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

Source§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U

Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist.
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<T> for T

Source§

fn downcast(&self) -> &T

Source§

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

Source§

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

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

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

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

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

Converts &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)

Converts &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> 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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

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

Source§

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>,

Source§

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> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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