Path: blob/main/crates/bevy_render/src/view/visibility/mod.rs
6598 views
use core::any::TypeId;12use bevy_ecs::{component::Component, entity::Entity, prelude::ReflectComponent};3use bevy_reflect::{prelude::ReflectDefault, Reflect};4use bevy_utils::TypeIdMap;56use crate::sync_world::MainEntity;78mod range;9use bevy_camera::visibility::*;10pub use range::*;1112/// Collection of entities visible from the current view.13///14/// This component is extracted from [`VisibleEntities`].15#[derive(Clone, Component, Default, Debug, Reflect)]16#[reflect(Component, Default, Debug, Clone)]17pub struct RenderVisibleEntities {18#[reflect(ignore, clone)]19pub entities: TypeIdMap<Vec<(Entity, MainEntity)>>,20}2122impl RenderVisibleEntities {23pub fn get<QF>(&self) -> &[(Entity, MainEntity)]24where25QF: 'static,26{27match self.entities.get(&TypeId::of::<QF>()) {28Some(entities) => &entities[..],29None => &[],30}31}3233pub fn iter<QF>(&self) -> impl DoubleEndedIterator<Item = &(Entity, MainEntity)>34where35QF: 'static,36{37self.get::<QF>().iter()38}3940pub fn len<QF>(&self) -> usize41where42QF: 'static,43{44self.get::<QF>().len()45}4647pub fn is_empty<QF>(&self) -> bool48where49QF: 'static,50{51self.get::<QF>().is_empty()52}53}545556