pub struct EntityClonerBuilder<'w> { /* private fields */ }
Expand description
A builder for configuring EntityCloner
. See EntityCloner
for more information.
Implementations§
Source§impl<'w> EntityClonerBuilder<'w>
impl<'w> EntityClonerBuilder<'w>
Sourcepub fn clone_entity(
&mut self,
source: Entity,
target: Entity,
) -> &mut EntityClonerBuilder<'w>
pub fn clone_entity( &mut self, source: Entity, target: Entity, ) -> &mut EntityClonerBuilder<'w>
Internally calls EntityCloner::clone_entity
on the builder’s World
.
Sourcepub fn finish(self) -> EntityCloner
pub fn finish(self) -> EntityCloner
Finishes configuring EntityCloner
returns it.
Sourcepub fn without_required_components(
&mut self,
builder: impl FnOnce(&mut EntityClonerBuilder<'_>),
) -> &mut EntityClonerBuilder<'w>
pub fn without_required_components( &mut self, builder: impl FnOnce(&mut EntityClonerBuilder<'_>), ) -> &mut EntityClonerBuilder<'w>
By default, any components allowed/denied through the filter will automatically allow/deny all of their required components.
This method allows for a scoped mode where any changes to the filter will not involve required components.
Sourcepub fn with_default_clone_fn(
&mut self,
clone_fn: fn(_: &SourceComponent<'_>, _: &mut ComponentCloneCtx<'_, '_>),
) -> &mut EntityClonerBuilder<'w>
pub fn with_default_clone_fn( &mut self, clone_fn: fn(_: &SourceComponent<'_>, _: &mut ComponentCloneCtx<'_, '_>), ) -> &mut EntityClonerBuilder<'w>
Sets the default clone function to use.
Sourcepub fn move_components(&mut self, enable: bool) -> &mut EntityClonerBuilder<'w>
pub fn move_components(&mut self, enable: bool) -> &mut EntityClonerBuilder<'w>
Sets whether the cloner should remove any components that were cloned, effectively moving them from the source entity to the target.
This is disabled by default.
The setting only applies to components that are allowed through the filter
at the time EntityClonerBuilder::clone_entity
is called.
Sourcepub fn allow<T>(&mut self) -> &mut EntityClonerBuilder<'w>where
T: Bundle,
pub fn allow<T>(&mut self) -> &mut EntityClonerBuilder<'w>where
T: Bundle,
Adds all components of the bundle to the list of components to clone.
Note that all components are allowed by default, to clone only explicitly allowed components make sure to call
deny_all
before calling any of the allow
methods.
Sourcepub fn allow_by_ids(
&mut self,
ids: impl IntoIterator<Item = ComponentId>,
) -> &mut EntityClonerBuilder<'w>
pub fn allow_by_ids( &mut self, ids: impl IntoIterator<Item = ComponentId>, ) -> &mut EntityClonerBuilder<'w>
Extends the list of components to clone.
Note that all components are allowed by default, to clone only explicitly allowed components make sure to call
deny_all
before calling any of the allow
methods.
Sourcepub fn allow_by_type_ids(
&mut self,
ids: impl IntoIterator<Item = TypeId>,
) -> &mut EntityClonerBuilder<'w>
pub fn allow_by_type_ids( &mut self, ids: impl IntoIterator<Item = TypeId>, ) -> &mut EntityClonerBuilder<'w>
Sourcepub fn allow_all(&mut self) -> &mut EntityClonerBuilder<'w>
pub fn allow_all(&mut self) -> &mut EntityClonerBuilder<'w>
Resets the filter to allow all components to be cloned.
Sourcepub fn deny<T>(&mut self) -> &mut EntityClonerBuilder<'w>where
T: Bundle,
pub fn deny<T>(&mut self) -> &mut EntityClonerBuilder<'w>where
T: Bundle,
Disallows all components of the bundle from being cloned.
Sourcepub fn deny_by_ids(
&mut self,
ids: impl IntoIterator<Item = ComponentId>,
) -> &mut EntityClonerBuilder<'w>
pub fn deny_by_ids( &mut self, ids: impl IntoIterator<Item = ComponentId>, ) -> &mut EntityClonerBuilder<'w>
Extends the list of components that shouldn’t be cloned.
Sourcepub fn deny_by_type_ids(
&mut self,
ids: impl IntoIterator<Item = TypeId>,
) -> &mut EntityClonerBuilder<'w>
pub fn deny_by_type_ids( &mut self, ids: impl IntoIterator<Item = TypeId>, ) -> &mut EntityClonerBuilder<'w>
Extends the list of components that shouldn’t be cloned by type ids.
Sourcepub fn deny_all(&mut self) -> &mut EntityClonerBuilder<'w>
pub fn deny_all(&mut self) -> &mut EntityClonerBuilder<'w>
Sets the filter to deny all components.
Sourcepub fn override_clone_behavior<T>(
&mut self,
clone_behavior: ComponentCloneBehavior,
) -> &mut EntityClonerBuilder<'w>where
T: Component,
pub fn override_clone_behavior<T>(
&mut self,
clone_behavior: ComponentCloneBehavior,
) -> &mut EntityClonerBuilder<'w>where
T: Component,
Overrides the ComponentCloneBehavior
for a component in this builder.
This handler will be used to clone the component instead of the global one defined by the EntityCloner
.
See Handlers section of EntityClonerBuilder
to understand how this affects handler priority.
Sourcepub fn override_clone_behavior_with_id(
&mut self,
component_id: ComponentId,
clone_behavior: ComponentCloneBehavior,
) -> &mut EntityClonerBuilder<'w>
pub fn override_clone_behavior_with_id( &mut self, component_id: ComponentId, clone_behavior: ComponentCloneBehavior, ) -> &mut EntityClonerBuilder<'w>
Overrides the ComponentCloneBehavior
for a component with the given component_id
in this builder.
This handler will be used to clone the component instead of the global one defined by the EntityCloner
.
See Handlers section of EntityClonerBuilder
to understand how this affects handler priority.
Sourcepub fn remove_clone_behavior_override<T>(
&mut self,
) -> &mut EntityClonerBuilder<'w>where
T: Component,
pub fn remove_clone_behavior_override<T>(
&mut self,
) -> &mut EntityClonerBuilder<'w>where
T: Component,
Removes a previously set override of ComponentCloneBehavior
for a component in this builder.
Sourcepub fn remove_clone_behavior_override_with_id(
&mut self,
component_id: ComponentId,
) -> &mut EntityClonerBuilder<'w>
pub fn remove_clone_behavior_override_with_id( &mut self, component_id: ComponentId, ) -> &mut EntityClonerBuilder<'w>
Removes a previously set override of ComponentCloneBehavior
for a given component_id
in this builder.
Sourcepub fn linked_cloning(
&mut self,
linked_cloning: bool,
) -> &mut EntityClonerBuilder<'w>
pub fn linked_cloning( &mut self, linked_cloning: bool, ) -> &mut EntityClonerBuilder<'w>
When true this cloner will be configured to clone entities referenced in cloned components via RelationshipTarget::LINKED_SPAWN
.
This will produce “deep” / recursive clones of relationship trees that have “linked spawn”.
Source§impl EntityClonerBuilder<'_>
impl EntityClonerBuilder<'_>
Sourcepub fn add_observers(
&mut self,
add_observers: bool,
) -> &mut EntityClonerBuilder<'_>
pub fn add_observers( &mut self, add_observers: bool, ) -> &mut EntityClonerBuilder<'_>
Sets the option to automatically add cloned entities to the observers targeting source entity.
Auto Trait Implementations§
impl<'w> Freeze for EntityClonerBuilder<'w>
impl<'w> !RefUnwindSafe for EntityClonerBuilder<'w>
impl<'w> !Send for EntityClonerBuilder<'w>
impl<'w> !Sync for EntityClonerBuilder<'w>
impl<'w> Unpin for EntityClonerBuilder<'w>
impl<'w> !UnwindSafe for EntityClonerBuilder<'w>
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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 Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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