Skip to main content

EntityClonerBuilder

Struct EntityClonerBuilder 

Source
pub struct EntityClonerBuilder<'w, Filter> { /* private fields */ }
Expand description

A builder for configuring EntityCloner. See EntityCloner for more information.

Implementations§

Source§

impl<'w, Filter> EntityClonerBuilder<'w, Filter>
where Filter: CloneByFilter,

Source

pub fn clone_entity( &mut self, source: Entity, target: Entity, ) -> &mut EntityClonerBuilder<'w, Filter>

Internally calls EntityCloner::clone_entity on the builder’s World.

Source

pub fn finish(self) -> EntityCloner

Finishes configuring EntityCloner returns it.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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”.

Source§

impl<'w> EntityClonerBuilder<'w, OptOut>

Source

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.

Source

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.

Source

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.

Source

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.

Source§

impl<'w> EntityClonerBuilder<'w, OptIn>

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source§

impl<Filter> EntityClonerBuilder<'_, Filter>
where Filter: CloneByFilter,

Source

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

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
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> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

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

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
Source§

impl<T> InitializeFromFunction<T> for T

Source§

fn initialize_from_function(f: fn() -> T) -> T

Create an instance of this type from an initialization function
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> IntoResult<T> for T

Source§

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
Source§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

Source§

fn into_sample(self) -> T

Source§

impl<A> Is for A
where A: Any,

Source§

fn is<T>() -> bool
where T: Any,

Checks if the current type “is” another type, using a TypeId equality comparison. This is most useful in the context of generic logic. Read more
Source§

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

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<Ret> SpawnIfAsync<(), Ret> for Ret

Source§

fn spawn(self) -> Ret

Spawn the value into the dioxus runtime if it is an async block
Source§

impl<T, O> SuperFrom<T> for O
where O: From<T>,

Source§

fn super_from(input: T) -> O

Convert from a type to another type.
Source§

impl<T, O, M> SuperInto<O, M> for T
where O: SuperFrom<T, M>,

Source§

fn super_into(self) -> O

Convert from a type to another type.
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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<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
Source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,