pub struct DynamicSceneBuilder<'w> { /* private fields */ }
Expand description
A DynamicScene
builder, used to build a scene from a World
by extracting some entities and resources.
§Component Extraction
By default, all components registered with ReflectComponent
type data in a world’s AppTypeRegistry
will be extracted.
(this type data is added automatically during registration if Reflect
is derived with the #[reflect(Component)]
attribute).
This can be changed by specifying a filter or by explicitly
allowing/denying certain components.
Extraction happens immediately and uses the filter as it exists during the time of extraction.
§Resource Extraction
By default, all resources registered with ReflectResource
type data in a world’s AppTypeRegistry
will be extracted.
(this type data is added automatically during registration if Reflect
is derived with the #[reflect(Resource)]
attribute).
This can be changed by specifying a filter or by explicitly
allowing/denying certain resources.
Extraction happens immediately and uses the filter as it exists during the time of extraction.
§Entity Order
Extracted entities will always be stored in ascending order based on their index.
This means that inserting Entity(1v0)
then Entity(0v0)
will always result in the entities
being ordered as [Entity(0v0), Entity(1v0)]
.
§Example
let dynamic_scene = DynamicSceneBuilder::from_world(&world).extract_entity(entity).build();
Implementations§
Source§impl<'w> DynamicSceneBuilder<'w>
impl<'w> DynamicSceneBuilder<'w>
Sourcepub fn from_world(world: &'w World) -> DynamicSceneBuilder<'w>
pub fn from_world(world: &'w World) -> DynamicSceneBuilder<'w>
Prepare a builder that will extract entities and their component from the given World
.
Sourcepub fn with_component_filter(
self,
filter: SceneFilter,
) -> DynamicSceneBuilder<'w>
pub fn with_component_filter( self, filter: SceneFilter, ) -> DynamicSceneBuilder<'w>
Specify a custom component SceneFilter
to be used with this builder.
Sourcepub fn with_resource_filter(
self,
filter: SceneFilter,
) -> DynamicSceneBuilder<'w>
pub fn with_resource_filter( self, filter: SceneFilter, ) -> DynamicSceneBuilder<'w>
Specify a custom resource SceneFilter
to be used with this builder.
Sourcepub fn allow_all(self) -> DynamicSceneBuilder<'w>
pub fn allow_all(self) -> DynamicSceneBuilder<'w>
Updates the filter to allow all component and resource types.
This is useful for resetting the filter so that types may be selectively denied
with deny_component
and deny_resource
.
Sourcepub fn deny_all(self) -> DynamicSceneBuilder<'w>
pub fn deny_all(self) -> DynamicSceneBuilder<'w>
Updates the filter to deny all component and resource types.
This is useful for resetting the filter so that types may be selectively allowed
with allow_component
and allow_resource
.
Sourcepub fn allow_component<T>(self) -> DynamicSceneBuilder<'w>where
T: Component,
pub fn allow_component<T>(self) -> DynamicSceneBuilder<'w>where
T: Component,
Allows the given component type, T
, to be included in the generated scene.
This method may be called multiple times for any number of components.
This is the inverse of deny_component
.
If T
has already been denied, then it will be removed from the denylist.
Sourcepub fn deny_component<T>(self) -> DynamicSceneBuilder<'w>where
T: Component,
pub fn deny_component<T>(self) -> DynamicSceneBuilder<'w>where
T: Component,
Denies the given component type, T
, from being included in the generated scene.
This method may be called multiple times for any number of components.
This is the inverse of allow_component
.
If T
has already been allowed, then it will be removed from the allowlist.
Sourcepub fn allow_all_components(self) -> DynamicSceneBuilder<'w>
pub fn allow_all_components(self) -> DynamicSceneBuilder<'w>
Updates the filter to allow all component types.
This is useful for resetting the filter so that types may be selectively denied.
Sourcepub fn deny_all_components(self) -> DynamicSceneBuilder<'w>
pub fn deny_all_components(self) -> DynamicSceneBuilder<'w>
Updates the filter to deny all component types.
This is useful for resetting the filter so that types may be selectively allowed.
Sourcepub fn allow_resource<T>(self) -> DynamicSceneBuilder<'w>where
T: Resource,
pub fn allow_resource<T>(self) -> DynamicSceneBuilder<'w>where
T: Resource,
Allows the given resource type, T
, to be included in the generated scene.
This method may be called multiple times for any number of resources.
This is the inverse of deny_resource
.
If T
has already been denied, then it will be removed from the denylist.
Sourcepub fn deny_resource<T>(self) -> DynamicSceneBuilder<'w>where
T: Resource,
pub fn deny_resource<T>(self) -> DynamicSceneBuilder<'w>where
T: Resource,
Denies the given resource type, T
, from being included in the generated scene.
This method may be called multiple times for any number of resources.
This is the inverse of allow_resource
.
If T
has already been allowed, then it will be removed from the allowlist.
Sourcepub fn allow_all_resources(self) -> DynamicSceneBuilder<'w>
pub fn allow_all_resources(self) -> DynamicSceneBuilder<'w>
Updates the filter to allow all resource types.
This is useful for resetting the filter so that types may be selectively denied.
Sourcepub fn deny_all_resources(self) -> DynamicSceneBuilder<'w>
pub fn deny_all_resources(self) -> DynamicSceneBuilder<'w>
Updates the filter to deny all resource types.
This is useful for resetting the filter so that types may be selectively allowed.
Sourcepub fn build(self) -> DynamicScene
pub fn build(self) -> DynamicScene
Consume the builder, producing a DynamicScene
.
To make sure the dynamic scene doesn’t contain entities without any components, call
Self::remove_empty_entities
before building the scene.
Sourcepub fn extract_entity(self, entity: Entity) -> DynamicSceneBuilder<'w>
pub fn extract_entity(self, entity: Entity) -> DynamicSceneBuilder<'w>
Extract one entity from the builder’s World
.
Re-extracting an entity that was already extracted will have no effect.
Sourcepub fn remove_empty_entities(self) -> DynamicSceneBuilder<'w>
pub fn remove_empty_entities(self) -> DynamicSceneBuilder<'w>
Despawns all entities with no components.
These were likely created because none of their components were present in the provided type registry upon extraction.
Sourcepub fn extract_entities(
self,
entities: impl Iterator<Item = Entity>,
) -> DynamicSceneBuilder<'w>
pub fn extract_entities( self, entities: impl Iterator<Item = Entity>, ) -> DynamicSceneBuilder<'w>
Extract entities from the builder’s World
.
Re-extracting an entity that was already extracted will have no effect.
To control which components are extracted, use the allow
or
deny
helper methods.
This method may be used to extract entities from a query:
#[derive(Component, Default, Reflect)]
#[reflect(Component)]
struct MyComponent;
let mut query = world.query_filtered::<Entity, With<MyComponent>>();
let scene = DynamicSceneBuilder::from_world(&world)
.extract_entities(query.iter(&world))
.build();
Note that components extracted from queried entities must still pass through the filter if one is set.
Sourcepub fn extract_resources(self) -> DynamicSceneBuilder<'w>
pub fn extract_resources(self) -> DynamicSceneBuilder<'w>
Extract resources from the builder’s World
.
Re-extracting a resource that was already extracted will have no effect.
To control which resources are extracted, use the allow_resource
or
deny_resource
helper methods.
#[derive(Resource, Default, Reflect)]
#[reflect(Resource)]
struct MyResource;
world.insert_resource(MyResource);
let mut builder = DynamicSceneBuilder::from_world(&world).extract_resources();
let scene = builder.build();
Auto Trait Implementations§
impl<'w> Freeze for DynamicSceneBuilder<'w>
impl<'w> !RefUnwindSafe for DynamicSceneBuilder<'w>
impl<'w> Send for DynamicSceneBuilder<'w>
impl<'w> Sync for DynamicSceneBuilder<'w>
impl<'w> Unpin for DynamicSceneBuilder<'w>
impl<'w> !UnwindSafe for DynamicSceneBuilder<'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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> 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 moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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 moreSource§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 moreSource§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
Source§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
Source§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.Source§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.Source§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.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.