pub struct RenderVisibleEntities {
pub entities: HashMap<TypeId, Vec<(Entity, MainEntity)>, NoOpHash>,
}Expand description
Collection of entities visible from the current view.
This component is extracted from VisibleEntities.
Fields§
§entities: HashMap<TypeId, Vec<(Entity, MainEntity)>, NoOpHash>Implementations§
Source§impl RenderVisibleEntities
impl RenderVisibleEntities
Sourcepub fn get<QF>(&self) -> &[(Entity, MainEntity)]where
QF: 'static,
pub fn get<QF>(&self) -> &[(Entity, MainEntity)]where
QF: 'static,
Examples found in repository?
examples/shader_advanced/custom_phase_item.rs (line 237)
215fn queue_custom_phase_item(
216 pipeline_cache: Res<PipelineCache>,
217 mut pipeline: ResMut<CustomPhasePipeline>,
218 mut opaque_render_phases: ResMut<ViewBinnedRenderPhases<Opaque3d>>,
219 opaque_draw_functions: Res<DrawFunctions<Opaque3d>>,
220 views: Query<(&ExtractedView, &RenderVisibleEntities, &Msaa)>,
221 mut next_tick: Local<Tick>,
222) {
223 let draw_custom_phase_item = opaque_draw_functions
224 .read()
225 .id::<DrawCustomPhaseItemCommands>();
226
227 // Render phases are per-view, so we need to iterate over all views so that
228 // the entity appears in them. (In this example, we have only one view, but
229 // it's good practice to loop over all views anyway.)
230 for (view, view_visible_entities, msaa) in views.iter() {
231 let Some(opaque_phase) = opaque_render_phases.get_mut(&view.retained_view_entity) else {
232 continue;
233 };
234
235 // Find all the custom rendered entities that are visible from this
236 // view.
237 for &entity in view_visible_entities.get::<CustomRenderedEntity>().iter() {
238 // Ordinarily, the [`SpecializedRenderPipeline::Key`] would contain
239 // some per-view settings, such as whether the view is HDR, but for
240 // simplicity's sake we simply hard-code the view's characteristics,
241 // with the exception of number of MSAA samples.
242 let Ok(pipeline_id) = pipeline
243 .variants
244 .specialize(&pipeline_cache, CustomPhaseKey(*msaa))
245 else {
246 continue;
247 };
248
249 // Bump the change tick in order to force Bevy to rebuild the bin.
250 let this_tick = next_tick.get() + 1;
251 next_tick.set(this_tick);
252
253 // Add the custom render item. We use the
254 // [`BinnedRenderPhaseType::NonMesh`] type to skip the special
255 // handling that Bevy has for meshes (preprocessing, indirect
256 // draws, etc.)
257 //
258 // The asset ID is arbitrary; we simply use [`AssetId::invalid`],
259 // but you can use anything you like. Note that the asset ID need
260 // not be the ID of a [`Mesh`].
261 opaque_phase.add(
262 Opaque3dBatchSetKey {
263 draw_function: draw_custom_phase_item,
264 pipeline: pipeline_id,
265 material_bind_group_index: None,
266 lightmap_slab: None,
267 vertex_slab: default(),
268 index_slab: None,
269 },
270 Opaque3dBinKey {
271 asset_id: AssetId::<Mesh>::invalid().untyped(),
272 },
273 entity,
274 InputUniformIndex::default(),
275 BinnedRenderPhaseType::NonMesh,
276 *next_tick,
277 );
278 }
279 }
280}More examples
examples/shader_advanced/specialized_mesh_pipeline.rs (line 304)
267fn queue_custom_mesh_pipeline(
268 pipeline_cache: Res<PipelineCache>,
269 custom_mesh_pipeline: Res<CustomMeshPipeline>,
270 (mut opaque_render_phases, opaque_draw_functions): (
271 ResMut<ViewBinnedRenderPhases<Opaque3d>>,
272 Res<DrawFunctions<Opaque3d>>,
273 ),
274 mut specialized_mesh_pipelines: ResMut<SpecializedMeshPipelines<CustomMeshPipeline>>,
275 views: Query<(&RenderVisibleEntities, &ExtractedView, &Msaa)>,
276 (render_meshes, render_mesh_instances): (
277 Res<RenderAssets<RenderMesh>>,
278 Res<RenderMeshInstances>,
279 ),
280 mut change_tick: Local<Tick>,
281 mesh_allocator: Res<MeshAllocator>,
282 gpu_preprocessing_support: Res<GpuPreprocessingSupport>,
283) {
284 // Get the id for our custom draw function
285 let draw_function = opaque_draw_functions
286 .read()
287 .id::<DrawSpecializedPipelineCommands>();
288
289 // Render phases are per-view, so we need to iterate over all views so that
290 // the entity appears in them. (In this example, we have only one view, but
291 // it's good practice to loop over all views anyway.)
292 for (view_visible_entities, view, msaa) in views.iter() {
293 let Some(opaque_phase) = opaque_render_phases.get_mut(&view.retained_view_entity) else {
294 continue;
295 };
296
297 // Create the key based on the view. In this case we only care about MSAA and HDR
298 let view_key = MeshPipelineKey::from_msaa_samples(msaa.samples())
299 | MeshPipelineKey::from_hdr(view.hdr);
300
301 // Find all the custom rendered entities that are visible from this
302 // view.
303 for &(render_entity, visible_entity) in
304 view_visible_entities.get::<CustomRenderedEntity>().iter()
305 {
306 // Get the mesh instance
307 let Some(mesh_instance) = render_mesh_instances.render_mesh_queue_data(visible_entity)
308 else {
309 continue;
310 };
311
312 // Get the mesh data
313 let Some(mesh) = render_meshes.get(mesh_instance.mesh_asset_id) else {
314 continue;
315 };
316
317 let (vertex_slab, index_slab) = mesh_allocator.mesh_slabs(&mesh_instance.mesh_asset_id);
318
319 // Specialize the key for the current mesh entity
320 // For this example we only specialize based on the mesh topology
321 // but you could have more complex keys and that's where you'd need to create those keys
322 let mut mesh_key = view_key;
323 mesh_key |= MeshPipelineKey::from_primitive_topology(mesh.primitive_topology());
324
325 // Finally, we can specialize the pipeline based on the key
326 let pipeline_id = specialized_mesh_pipelines
327 .specialize(
328 &pipeline_cache,
329 &custom_mesh_pipeline,
330 mesh_key,
331 &mesh.layout,
332 )
333 // This should never happen with this example, but if your pipeline
334 // specialization can fail you need to handle the error here
335 .expect("Failed to specialize mesh pipeline");
336
337 // Bump the change tick so that Bevy is forced to rebuild the bin.
338 let next_change_tick = change_tick.get() + 1;
339 change_tick.set(next_change_tick);
340
341 // Add the mesh with our specialized pipeline
342 opaque_phase.add(
343 Opaque3dBatchSetKey {
344 draw_function,
345 pipeline: pipeline_id,
346 material_bind_group_index: None,
347 vertex_slab: vertex_slab.unwrap_or_default(),
348 index_slab,
349 lightmap_slab: None,
350 },
351 // For this example we can use the mesh asset id as the bin key,
352 // but you can use any asset_id as a key
353 Opaque3dBinKey {
354 asset_id: mesh_instance.mesh_asset_id.into(),
355 },
356 (render_entity, visible_entity),
357 mesh_instance.current_uniform_index,
358 // This example supports batching and multi draw indirect,
359 // but if your pipeline doesn't support it you can use
360 // `BinnedRenderPhaseType::UnbatchableMesh`
361 BinnedRenderPhaseType::mesh(
362 mesh_instance.should_batch(),
363 &gpu_preprocessing_support,
364 ),
365 *change_tick,
366 );
367 }
368 }
369}Sourcepub fn iter<QF>(&self) -> impl DoubleEndedIteratorwhere
QF: 'static,
pub fn iter<QF>(&self) -> impl DoubleEndedIteratorwhere
QF: 'static,
Examples found in repository?
examples/2d/mesh2d_manual.rs (line 403)
377pub fn queue_colored_mesh2d(
378 transparent_draw_functions: Res<DrawFunctions<Transparent2d>>,
379 colored_mesh2d_pipeline: Res<ColoredMesh2dPipeline>,
380 mut pipelines: ResMut<SpecializedRenderPipelines<ColoredMesh2dPipeline>>,
381 pipeline_cache: Res<PipelineCache>,
382 render_meshes: Res<RenderAssets<RenderMesh>>,
383 render_mesh_instances: Res<RenderColoredMesh2dInstances>,
384 mut transparent_render_phases: ResMut<ViewSortedRenderPhases<Transparent2d>>,
385 views: Query<(&RenderVisibleEntities, &ExtractedView, &Msaa)>,
386) {
387 if render_mesh_instances.is_empty() {
388 return;
389 }
390 // Iterate each view (a camera is a view)
391 for (visible_entities, view, msaa) in &views {
392 let Some(transparent_phase) = transparent_render_phases.get_mut(&view.retained_view_entity)
393 else {
394 continue;
395 };
396
397 let draw_colored_mesh2d = transparent_draw_functions.read().id::<DrawColoredMesh2d>();
398
399 let mesh_key = Mesh2dPipelineKey::from_msaa_samples(msaa.samples())
400 | Mesh2dPipelineKey::from_hdr(view.hdr);
401
402 // Queue all entities visible to that view
403 for (render_entity, visible_entity) in visible_entities.iter::<Mesh2d>() {
404 if let Some(mesh_instance) = render_mesh_instances.get(visible_entity) {
405 let mesh2d_handle = mesh_instance.mesh_asset_id;
406 let mesh2d_transforms = &mesh_instance.transforms;
407 // Get our specialized pipeline
408 let mut mesh2d_key = mesh_key;
409 let Some(mesh) = render_meshes.get(mesh2d_handle) else {
410 continue;
411 };
412 mesh2d_key |= Mesh2dPipelineKey::from_primitive_topology(mesh.primitive_topology());
413
414 let pipeline_id =
415 pipelines.specialize(&pipeline_cache, &colored_mesh2d_pipeline, mesh2d_key);
416
417 let mesh_z = mesh2d_transforms.world_from_local.translation.z;
418 transparent_phase.add(Transparent2d {
419 entity: (*render_entity, *visible_entity),
420 draw_function: draw_colored_mesh2d,
421 pipeline: pipeline_id,
422 // The 2d render items are sorted according to their z value before rendering,
423 // in order to get correct transparency
424 sort_key: FloatOrd(mesh_z),
425 // This material is not batched
426 batch_range: 0..1,
427 extra_index: PhaseItemExtraIndex::None,
428 extracted_index: usize::MAX,
429 indexed: mesh.indexed(),
430 });
431 }
432 }
433 }
434}More examples
examples/shader_advanced/custom_render_phase.rs (line 520)
496fn queue_custom_meshes(
497 custom_draw_functions: Res<DrawFunctions<Stencil3d>>,
498 mut pipelines: ResMut<SpecializedMeshPipelines<StencilPipeline>>,
499 pipeline_cache: Res<PipelineCache>,
500 custom_draw_pipeline: Res<StencilPipeline>,
501 render_meshes: Res<RenderAssets<RenderMesh>>,
502 render_mesh_instances: Res<RenderMeshInstances>,
503 mut custom_render_phases: ResMut<ViewSortedRenderPhases<Stencil3d>>,
504 mut views: Query<(&ExtractedView, &RenderVisibleEntities, &Msaa)>,
505 has_marker: Query<(), With<DrawStencil>>,
506) {
507 for (view, visible_entities, msaa) in &mut views {
508 let Some(custom_phase) = custom_render_phases.get_mut(&view.retained_view_entity) else {
509 continue;
510 };
511 let draw_custom = custom_draw_functions.read().id::<DrawMesh3dStencil>();
512
513 // Create the key based on the view.
514 // In this case we only care about MSAA and HDR
515 let view_key = MeshPipelineKey::from_msaa_samples(msaa.samples())
516 | MeshPipelineKey::from_hdr(view.hdr);
517
518 let rangefinder = view.rangefinder3d();
519 // Since our phase can work on any 3d mesh we can reuse the default mesh 3d filter
520 for (render_entity, visible_entity) in visible_entities.iter::<Mesh3d>() {
521 // We only want meshes with the marker component to be queued to our phase.
522 if has_marker.get(*render_entity).is_err() {
523 continue;
524 }
525 let Some(mesh_instance) = render_mesh_instances.render_mesh_queue_data(*visible_entity)
526 else {
527 continue;
528 };
529 let Some(mesh) = render_meshes.get(mesh_instance.mesh_asset_id) else {
530 continue;
531 };
532
533 // Specialize the key for the current mesh entity
534 // For this example we only specialize based on the mesh topology
535 // but you could have more complex keys and that's where you'd need to create those keys
536 let mut mesh_key = view_key;
537 mesh_key |= MeshPipelineKey::from_primitive_topology(mesh.primitive_topology());
538
539 let pipeline_id = pipelines.specialize(
540 &pipeline_cache,
541 &custom_draw_pipeline,
542 mesh_key,
543 &mesh.layout,
544 );
545 let pipeline_id = match pipeline_id {
546 Ok(id) => id,
547 Err(err) => {
548 error!("{}", err);
549 continue;
550 }
551 };
552 let distance = rangefinder.distance_translation(&mesh_instance.translation);
553 // At this point we have all the data we need to create a phase item and add it to our
554 // phase
555 custom_phase.add(Stencil3d {
556 // Sort the data based on the distance to the view
557 sort_key: FloatOrd(distance),
558 entity: (*render_entity, *visible_entity),
559 pipeline: pipeline_id,
560 draw_function: draw_custom,
561 // Sorted phase items aren't batched
562 batch_range: 0..1,
563 extra_index: PhaseItemExtraIndex::None,
564 indexed: mesh.indexed(),
565 });
566 }
567 }
568}pub fn len<QF>(&self) -> usizewhere
QF: 'static,
pub fn is_empty<QF>(&self) -> boolwhere
QF: 'static,
Trait Implementations§
Source§impl Clone for RenderVisibleEntities
impl Clone for RenderVisibleEntities
Source§fn clone(&self) -> RenderVisibleEntities
fn clone(&self) -> RenderVisibleEntities
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Component for RenderVisibleEntities
impl Component for RenderVisibleEntities
Source§const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
A constant indicating the storage type used for this component.
Source§type Mutability = Mutable
type Mutability = Mutable
A marker type to assist Bevy with determining if this component is
mutable, or immutable. Mutable components will have
Component<Mutability = Mutable>,
while immutable components will instead have Component<Mutability = Immutable>. Read moreSource§fn register_required_components(
_requiree: ComponentId,
required_components: &mut RequiredComponentsRegistrator<'_, '_>,
)
fn register_required_components( _requiree: ComponentId, required_components: &mut RequiredComponentsRegistrator<'_, '_>, )
Registers required components. Read more
Source§fn clone_behavior() -> ComponentCloneBehavior
fn clone_behavior() -> ComponentCloneBehavior
Called when registering this component, allowing to override clone function (or disable cloning altogether) for this component. Read more
Source§fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_replace() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_replace() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn map_entities<E>(_this: &mut Self, _mapper: &mut E)where
E: EntityMapper,
fn map_entities<E>(_this: &mut Self, _mapper: &mut E)where
E: EntityMapper,
Maps the entities on this component using the given
EntityMapper. This is used to remap entities in contexts like scenes and entity cloning.
When deriving Component, this is populated by annotating fields containing entities with #[entities] Read moreSource§impl Debug for RenderVisibleEntities
impl Debug for RenderVisibleEntities
Source§impl Default for RenderVisibleEntities
impl Default for RenderVisibleEntities
Source§fn default() -> RenderVisibleEntities
fn default() -> RenderVisibleEntities
Returns the “default value” for a type. Read more
Source§impl FromArg for RenderVisibleEntities
impl FromArg for RenderVisibleEntities
Source§impl FromReflect for RenderVisibleEntities
impl FromReflect for RenderVisibleEntities
Source§fn from_reflect(
reflect: &(dyn PartialReflect + 'static),
) -> Option<RenderVisibleEntities>
fn from_reflect( reflect: &(dyn PartialReflect + 'static), ) -> Option<RenderVisibleEntities>
Constructs a concrete instance of
Self from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Attempts to downcast the given value to
Self using,
constructing the value using from_reflect if that fails. Read moreSource§impl GetOwnership for RenderVisibleEntities
impl GetOwnership for RenderVisibleEntities
Source§impl GetTypeRegistration for RenderVisibleEntities
impl GetTypeRegistration for RenderVisibleEntities
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
Returns the default
TypeRegistration for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Registers other types needed by this type. Read more
Source§impl IntoReturn for RenderVisibleEntities
impl IntoReturn for RenderVisibleEntities
Source§fn into_return<'into_return>(self) -> Return<'into_return>where
RenderVisibleEntities: 'into_return,
fn into_return<'into_return>(self) -> Return<'into_return>where
RenderVisibleEntities: 'into_return,
Source§impl PartialReflect for RenderVisibleEntities
impl PartialReflect for RenderVisibleEntities
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn try_apply(
&mut self,
value: &(dyn PartialReflect + 'static),
) -> Result<(), ApplyError>
fn try_apply( &mut self, value: &(dyn PartialReflect + 'static), ) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Returns a zero-sized enumeration of “kinds” of type. Read more
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Returns an immutable enumeration of “kinds” of type. Read more
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Returns a mutable enumeration of “kinds” of type. Read more
Source§fn reflect_owned(self: Box<RenderVisibleEntities>) -> ReflectOwned
fn reflect_owned(self: Box<RenderVisibleEntities>) -> ReflectOwned
Returns an owned enumeration of “kinds” of type. Read more
Source§fn try_into_reflect(
self: Box<RenderVisibleEntities>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<RenderVisibleEntities>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Attempts to cast this type to a boxed, fully-reflected value.
Source§fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
Attempts to cast this type to a fully-reflected value.
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
Attempts to cast this type to a mutable, fully-reflected value.
Source§fn into_partial_reflect(
self: Box<RenderVisibleEntities>,
) -> Box<dyn PartialReflect>
fn into_partial_reflect( self: Box<RenderVisibleEntities>, ) -> Box<dyn PartialReflect>
Casts this type to a boxed, reflected value. Read more
Source§fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
Casts this type to a reflected value. Read more
Source§fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
Casts this type to a mutable, reflected value. Read more
Source§fn reflect_partial_eq(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<bool>
fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>
Returns a “partial equality” comparison result. Read more
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Debug formatter for the value. Read more
Source§fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
Attempts to clone
Self using reflection. Read moreSource§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Applies a reflected value to this value. Read more
Source§fn to_dynamic(&self) -> Box<dyn PartialReflect>
fn to_dynamic(&self) -> Box<dyn PartialReflect>
Source§fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
For a type implementing
PartialReflect, combines reflect_clone and
take in a useful fashion, automatically constructing an appropriate
ReflectCloneError if the downcast fails. Read moreSource§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Returns a hash of the value (which includes the type). Read more
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Indicates whether or not this type is a dynamic type. Read more
Source§impl Reflect for RenderVisibleEntities
impl Reflect for RenderVisibleEntities
Source§fn into_any(self: Box<RenderVisibleEntities>) -> Box<dyn Any>
fn into_any(self: Box<RenderVisibleEntities>) -> Box<dyn Any>
Returns the value as a
Box<dyn Any>. Read moreSource§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Returns the value as a
&mut dyn Any. Read moreSource§fn into_reflect(self: Box<RenderVisibleEntities>) -> Box<dyn Reflect>
fn into_reflect(self: Box<RenderVisibleEntities>) -> Box<dyn Reflect>
Casts this type to a boxed, fully-reflected value.
Source§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
Casts this type to a fully-reflected value.
Source§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
Casts this type to a mutable, fully-reflected value.
Source§impl Struct for RenderVisibleEntities
impl Struct for RenderVisibleEntities
Source§fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>
fn field(&self, name: &str) -> Option<&(dyn PartialReflect + 'static)>
Returns a reference to the value of the field named
name as a &dyn PartialReflect.Source§fn field_mut(
&mut self,
name: &str,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_mut( &mut self, name: &str, ) -> Option<&mut (dyn PartialReflect + 'static)>
Returns a mutable reference to the value of the field named
name as a
&mut dyn PartialReflect.Source§fn field_at(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
fn field_at(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
Returns a reference to the value of the field with index
index as a
&dyn PartialReflect.Source§fn field_at_mut(
&mut self,
index: usize,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_at_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>
Returns a mutable reference to the value of the field with index
index
as a &mut dyn PartialReflect.Source§fn name_at(&self, index: usize) -> Option<&str>
fn name_at(&self, index: usize) -> Option<&str>
Returns the name of the field with index
index.Source§fn iter_fields(&self) -> FieldIter<'_> ⓘ
fn iter_fields(&self) -> FieldIter<'_> ⓘ
Returns an iterator over the values of the reflectable fields for this struct.
Source§fn to_dynamic_struct(&self) -> DynamicStruct
fn to_dynamic_struct(&self) -> DynamicStruct
Creates a new
DynamicStruct from this struct.Source§fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
Will return
None if TypeInfo is not available.Source§impl TypePath for RenderVisibleEntities
impl TypePath for RenderVisibleEntities
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Returns the fully qualified path of the underlying type. Read more
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Returns a short, pretty-print enabled path to the type. Read more
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Auto Trait Implementations§
impl Freeze for RenderVisibleEntities
impl RefUnwindSafe for RenderVisibleEntities
impl Send for RenderVisibleEntities
impl Sync for RenderVisibleEntities
impl Unpin for RenderVisibleEntities
impl UnwindSafe for RenderVisibleEntities
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
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> 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
Mutably borrows from an owned value. Read more
Source§impl<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere
C: Component,
fn component_ids( components: &mut ComponentsRegistrator<'_>, ids: &mut impl FnMut(ComponentId), )
Source§fn get_component_ids(
components: &Components,
ids: &mut impl FnMut(Option<ComponentId>),
)
fn get_component_ids( components: &Components, ids: &mut impl FnMut(Option<ComponentId>), )
Source§impl<C> BundleFromComponents for Cwhere
C: Component,
impl<C> BundleFromComponents for Cwhere
C: Component,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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)
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)
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 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>
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>
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)
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)
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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<C> DynamicBundle for Cwhere
C: Component,
impl<C> DynamicBundle for Cwhere
C: Component,
Source§unsafe fn get_components(
ptr: MovingPtr<'_, C>,
func: &mut impl FnMut(StorageType, OwningPtr<'_>),
) -> <C as DynamicBundle>::Effect
unsafe fn get_components( ptr: MovingPtr<'_, C>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), ) -> <C as DynamicBundle>::Effect
Moves the components out of the bundle. Read more
Source§unsafe fn apply_effect(
_ptr: MovingPtr<'_, MaybeUninit<C>>,
_entity: &mut EntityWorldMut<'_>,
)
unsafe fn apply_effect( _ptr: MovingPtr<'_, MaybeUninit<C>>, _entity: &mut EntityWorldMut<'_>, )
Applies the after-effects of spawning this bundle. Read more
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
See
TypePath::type_path.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
See
TypePath::type_ident.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
See
TypePath::crate_name.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
See
Typed::type_info.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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self using default().
Source§impl<S> GetField for Swhere
S: Struct,
impl<S> GetField for Swhere
S: Struct,
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
Returns a reference to the value specified by
path. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
Returns a mutable reference to the value specified by
path. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
Returns a statically typed reference to the value specified by
path. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
Returns a statically typed mutable reference to the value specified by
path. Read moreSource§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> InitializeFromFunction<T> for T
impl<T> InitializeFromFunction<T> for T
Source§fn initialize_from_function(f: fn() -> T) -> T
fn initialize_from_function(f: fn() -> T) -> T
Create an instance of this type from an initialization function
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> ⓘ
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 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> ⓘ
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 moreSource§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
Converts this type into the system output type.
Source§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,
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) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
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,
Mutably borrows
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
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().Source§impl<Ret> SpawnIfAsync<(), Ret> for Ret
impl<Ret> SpawnIfAsync<(), Ret> for Ret
Source§impl<T, O> SuperFrom<T> for Owhere
O: From<T>,
impl<T, O> SuperFrom<T> for Owhere
O: From<T>,
Source§fn super_from(input: T) -> O
fn super_from(input: T) -> O
Convert from a type to another type.
Source§impl<T, O, M> SuperInto<O, M> for Twhere
O: SuperFrom<T, M>,
impl<T, O, M> SuperInto<O, M> for Twhere
O: SuperFrom<T, M>,
Source§fn super_into(self) -> O
fn super_into(self) -> O
Convert from a type to another type.
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
Immutable access to the
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
Mutable access to the
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
Immutable access to the
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
Mutable access to the
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
Immutable access to the
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
Mutable access to the
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
Calls
.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
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
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
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
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
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
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.Source§impl<T, U> ToSample<U> for Twhere
U: FromSample<T>,
impl<T, U> ToSample<U> for Twhere
U: FromSample<T>,
fn to_sample_(self) -> U
Source§impl<T> TypeData for T
impl<T> TypeData for T
Source§fn clone_type_data(&self) -> Box<dyn TypeData>
fn clone_type_data(&self) -> Box<dyn TypeData>
Creates a type-erased clone of this value.