Struct EntityClonerBuilder
pub struct EntityClonerBuilder<'w, Filter> { /* private fields */ }Expand description
A builder for configuring EntityCloner. See EntityCloner for more information.
Implementations§
§impl<'w, Filter> EntityClonerBuilder<'w, Filter>where
Filter: CloneByFilter,
impl<'w, Filter> EntityClonerBuilder<'w, Filter>where
Filter: CloneByFilter,
pub fn clone_entity(
&mut self,
source: Entity,
target: Entity,
) -> &mut EntityClonerBuilder<'w, Filter>
pub fn clone_entity( &mut self, source: Entity, target: Entity, ) -> &mut EntityClonerBuilder<'w, Filter>
Internally calls EntityCloner::clone_entity on the builder’s World.
pub fn finish(self) -> EntityCloner
pub fn finish(self) -> EntityCloner
Finishes configuring EntityCloner returns it.
pub fn with_default_clone_fn(
&mut self,
clone_fn: fn(&SourceComponent<'_>, &mut ComponentCloneCtx<'_, '_>),
) -> &mut EntityClonerBuilder<'w, Filter>
pub fn with_default_clone_fn( &mut self, clone_fn: fn(&SourceComponent<'_>, &mut ComponentCloneCtx<'_, '_>), ) -> &mut EntityClonerBuilder<'w, Filter>
Sets the default clone function to use.
Will be overridden if EntityClonerBuilder::move_components is enabled.
pub fn move_components(
&mut self,
enable: bool,
) -> &mut EntityClonerBuilder<'w, Filter>
pub fn move_components( &mut self, enable: bool, ) -> &mut EntityClonerBuilder<'w, Filter>
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.
Enabling this overrides any custom function set with EntityClonerBuilder::with_default_clone_fn.
pub fn override_clone_behavior<T>(
&mut self,
clone_behavior: ComponentCloneBehavior,
) -> &mut EntityClonerBuilder<'w, Filter>where
T: Component,
pub fn override_clone_behavior<T>(
&mut self,
clone_behavior: ComponentCloneBehavior,
) -> &mut EntityClonerBuilder<'w, Filter>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 Clone Behaviors section of EntityCloner to understand how this affects handler priority.
pub fn override_clone_behavior_with_id(
&mut self,
component_id: ComponentId,
clone_behavior: ComponentCloneBehavior,
) -> &mut EntityClonerBuilder<'w, Filter>
pub fn override_clone_behavior_with_id( &mut self, component_id: ComponentId, clone_behavior: ComponentCloneBehavior, ) -> &mut EntityClonerBuilder<'w, Filter>
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 Clone Behaviors section of EntityCloner to understand how this affects handler priority.
pub fn remove_clone_behavior_override<T>(
&mut self,
) -> &mut EntityClonerBuilder<'w, Filter>where
T: Component,
pub fn remove_clone_behavior_override<T>(
&mut self,
) -> &mut EntityClonerBuilder<'w, Filter>where
T: Component,
Removes a previously set override of ComponentCloneBehavior for a component in this builder.
pub fn remove_clone_behavior_override_with_id(
&mut self,
component_id: ComponentId,
) -> &mut EntityClonerBuilder<'w, Filter>
pub fn remove_clone_behavior_override_with_id( &mut self, component_id: ComponentId, ) -> &mut EntityClonerBuilder<'w, Filter>
Removes a previously set override of ComponentCloneBehavior for a given component_id in this builder.
pub fn linked_cloning(
&mut self,
linked_cloning: bool,
) -> &mut EntityClonerBuilder<'w, Filter>
pub fn linked_cloning( &mut self, linked_cloning: bool, ) -> &mut EntityClonerBuilder<'w, Filter>
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”.
§impl<'w> EntityClonerBuilder<'w, OptOut>
impl<'w> EntityClonerBuilder<'w, OptOut>
pub fn without_required_by_components(
&mut self,
builder: impl FnOnce(&mut EntityClonerBuilder<'w, OptOut>),
) -> &mut EntityClonerBuilder<'w, OptOut>
pub fn without_required_by_components( &mut self, builder: impl FnOnce(&mut EntityClonerBuilder<'w, OptOut>), ) -> &mut EntityClonerBuilder<'w, OptOut>
By default, any components denied through the filter will automatically deny all of components they are required by too.
This method allows for a scoped mode where any changes to the filter will not involve these requiring components.
If component A is denied in the builder closure here and component B
requires A, then A will be inserted with the value defined in B’s
Component derive.
This assumes A is missing yet at the target entity.
pub fn insert_mode(
&mut self,
insert_mode: InsertMode,
) -> &mut EntityClonerBuilder<'w, OptOut>
pub fn insert_mode( &mut self, insert_mode: InsertMode, ) -> &mut EntityClonerBuilder<'w, OptOut>
Sets whether components are always cloned (InsertMode::Replace, the default) or only if it is missing
(InsertMode::Keep) at the target entity.
This makes no difference if the target is spawned by the cloner.
pub fn deny<T>(&mut self) -> &mut EntityClonerBuilder<'w, OptOut>where
T: Bundle,
pub fn deny<T>(&mut self) -> &mut EntityClonerBuilder<'w, OptOut>where
T: Bundle,
Disallows all components of the bundle from being cloned.
If component A is denied here and component B requires A, then A
is denied as well. See Self::without_required_by_components to alter
this behavior.
pub fn deny_by_ids<M>(
&mut self,
ids: impl FilterableIds<M>,
) -> &mut EntityClonerBuilder<'w, OptOut>where
M: Marker,
pub fn deny_by_ids<M>(
&mut self,
ids: impl FilterableIds<M>,
) -> &mut EntityClonerBuilder<'w, OptOut>where
M: Marker,
Extends the list of components that shouldn’t be cloned.
Supports filtering by TypeId, ComponentId, BundleId, and IntoIterator yielding one of these.
If component A is denied here and component B requires A, then A
is denied as well. See Self::without_required_by_components to alter
this behavior.
§impl<'w> EntityClonerBuilder<'w, OptIn>
impl<'w> EntityClonerBuilder<'w, OptIn>
pub fn without_required_components(
&mut self,
builder: impl FnOnce(&mut EntityClonerBuilder<'w, OptIn>),
) -> &mut EntityClonerBuilder<'w, OptIn>
pub fn without_required_components( &mut self, builder: impl FnOnce(&mut EntityClonerBuilder<'w, OptIn>), ) -> &mut EntityClonerBuilder<'w, OptIn>
By default, any components allowed through the filter will automatically allow all of their required components.
This method allows for a scoped mode where any changes to the filter will not involve required components.
If component A is allowed in the builder closure here and requires
component B, then B will be inserted with the value defined in A’s
Component derive.
This assumes B is missing yet at the target entity.
pub fn allow<T>(&mut self) -> &mut EntityClonerBuilder<'w, OptIn>where
T: Bundle,
pub fn allow<T>(&mut self) -> &mut EntityClonerBuilder<'w, OptIn>where
T: Bundle,
Adds all components of the bundle to the list of components to clone.
If component A is allowed here and requires component B, then B
is allowed as well. See Self::without_required_components
to alter this behavior.
pub fn allow_if_new<T>(&mut self) -> &mut EntityClonerBuilder<'w, OptIn>where
T: Bundle,
pub fn allow_if_new<T>(&mut self) -> &mut EntityClonerBuilder<'w, OptIn>where
T: Bundle,
Adds all components of the bundle to the list of components to clone if the target does not contain them.
If component A is allowed here and requires component B, then B
is allowed as well. See Self::without_required_components
to alter this behavior.
pub fn allow_by_ids<M>(
&mut self,
ids: impl FilterableIds<M>,
) -> &mut EntityClonerBuilder<'w, OptIn>where
M: Marker,
pub fn allow_by_ids<M>(
&mut self,
ids: impl FilterableIds<M>,
) -> &mut EntityClonerBuilder<'w, OptIn>where
M: Marker,
Extends the list of components to clone.
Supports filtering by TypeId, ComponentId, BundleId, and IntoIterator yielding one of these.
If component A is allowed here and requires component B, then B
is allowed as well. See Self::without_required_components
to alter this behavior.
pub fn allow_by_ids_if_new<M>(
&mut self,
ids: impl FilterableIds<M>,
) -> &mut EntityClonerBuilder<'w, OptIn>where
M: Marker,
pub fn allow_by_ids_if_new<M>(
&mut self,
ids: impl FilterableIds<M>,
) -> &mut EntityClonerBuilder<'w, OptIn>where
M: Marker,
Extends the list of components to clone if the target does not contain them.
Supports filtering by TypeId, ComponentId, BundleId, and IntoIterator yielding one of these.
If component A is allowed here and requires component B, then B
is allowed as well. See Self::without_required_components
to alter this behavior.
§impl<Filter> EntityClonerBuilder<'_, Filter>where
Filter: CloneByFilter,
impl<Filter> EntityClonerBuilder<'_, Filter>where
Filter: CloneByFilter,
pub fn add_observers(
&mut self,
add_observers: bool,
) -> &mut EntityClonerBuilder<'_, Filter>
pub fn add_observers( &mut self, add_observers: bool, ) -> &mut EntityClonerBuilder<'_, Filter>
Sets the option to automatically add cloned entities to the observers targeting source entity.
Auto Trait Implementations§
impl<'w, Filter> Freeze for EntityClonerBuilder<'w, Filter>where
Filter: Freeze,
impl<'w, Filter> !RefUnwindSafe for EntityClonerBuilder<'w, Filter>
impl<'w, Filter> !Send for EntityClonerBuilder<'w, Filter>
impl<'w, Filter> !Sync for EntityClonerBuilder<'w, Filter>
impl<'w, Filter> Unpin for EntityClonerBuilder<'w, Filter>where
Filter: Unpin,
impl<'w, Filter> UnsafeUnpin for EntityClonerBuilder<'w, Filter>where
Filter: UnsafeUnpin,
impl<'w, Filter> !UnwindSafe for EntityClonerBuilder<'w, Filter>
Blanket Implementations§
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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.§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.§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.§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.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.