bevy_pbr/
components.rs

1use bevy_derive::{Deref, DerefMut};
2use bevy_ecs::component::Component;
3use bevy_ecs::entity::{Entity, EntityHashMap};
4use bevy_ecs::reflect::ReflectComponent;
5use bevy_reflect::{std_traits::ReflectDefault, Reflect};
6use bevy_render::sync_world::MainEntity;
7
8#[derive(Component, Clone, Debug, Default, Reflect, Deref, DerefMut)]
9#[reflect(Component, Debug, Default, Clone)]
10pub struct RenderVisibleMeshEntities {
11    #[reflect(ignore, clone)]
12    pub entities: Vec<(Entity, MainEntity)>,
13}
14
15#[derive(Component, Clone, Debug, Default, Reflect)]
16#[reflect(Component, Debug, Default, Clone)]
17pub struct RenderCubemapVisibleEntities {
18    #[reflect(ignore, clone)]
19    pub(crate) data: [RenderVisibleMeshEntities; 6],
20}
21
22impl RenderCubemapVisibleEntities {
23    pub fn get(&self, i: usize) -> &RenderVisibleMeshEntities {
24        &self.data[i]
25    }
26
27    pub fn get_mut(&mut self, i: usize) -> &mut RenderVisibleMeshEntities {
28        &mut self.data[i]
29    }
30
31    pub fn iter(&self) -> impl DoubleEndedIterator<Item = &RenderVisibleMeshEntities> {
32        self.data.iter()
33    }
34
35    pub fn iter_mut(&mut self) -> impl DoubleEndedIterator<Item = &mut RenderVisibleMeshEntities> {
36        self.data.iter_mut()
37    }
38}
39
40#[derive(Component, Clone, Debug, Default, Reflect)]
41#[reflect(Component, Default, Clone)]
42pub struct RenderCascadesVisibleEntities {
43    /// Map of view entity to the visible entities for each cascade frustum.
44    #[reflect(ignore, clone)]
45    pub entities: EntityHashMap<Vec<RenderVisibleMeshEntities>>,
46}