DynamicSceneBuilder

Struct DynamicSceneBuilder 

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

Source

pub fn from_world(world: &'w World) -> DynamicSceneBuilder<'w>

Prepare a builder that will extract entities and their component from the given World.

Source

pub fn with_component_filter( self, filter: SceneFilter, ) -> DynamicSceneBuilder<'w>

Specify a custom component SceneFilter to be used with this builder.

Source

pub fn with_resource_filter( self, filter: SceneFilter, ) -> DynamicSceneBuilder<'w>

Specify a custom resource SceneFilter to be used with this builder.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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§

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> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
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> 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> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

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
Source§

impl<T> ConditionalSend for T
where T: Send,

Source§

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

Source§

impl<T> Settings for T
where T: 'static + Send + Sync,

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,