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#[derive(Component, Clone, Debug, Default, Reflect, Deref, DerefMut)]
12#[reflect(Component, Debug, Default, Clone)]
13pub struct VisibleMeshEntities {
14 #[reflect(ignore, clone)]
15 pub entities: Vec<Entity>,
16}
17
18#[derive(Component, Clone, Debug, Default, Reflect, Deref, DerefMut)]
19#[reflect(Component, Debug, Default, Clone)]
20pub struct RenderVisibleMeshEntities {
21 #[reflect(ignore, clone)]
22 pub entities: Vec<(Entity, MainEntity)>,
23}
24
25#[derive(Component, Clone, Debug, Default, Reflect)]
26#[reflect(Component, Debug, Default, Clone)]
27pub struct CubemapVisibleEntities {
28 #[reflect(ignore, clone)]
29 data: [VisibleMeshEntities; 6],
30}
31
32impl CubemapVisibleEntities {
33 pub fn get(&self, i: usize) -> &VisibleMeshEntities {
34 &self.data[i]
35 }
36
37 pub fn get_mut(&mut self, i: usize) -> &mut VisibleMeshEntities {
38 &mut self.data[i]
39 }
40
41 pub fn iter(&self) -> impl DoubleEndedIterator<Item = &VisibleMeshEntities> {
42 self.data.iter()
43 }
44
45 pub fn iter_mut(&mut self) -> impl DoubleEndedIterator<Item = &mut VisibleMeshEntities> {
46 self.data.iter_mut()
47 }
48}
49
50#[derive(Component, Clone, Debug, Default, Reflect)]
51#[reflect(Component, Debug, Default, Clone)]
52pub struct RenderCubemapVisibleEntities {
53 #[reflect(ignore, clone)]
54 pub(crate) data: [RenderVisibleMeshEntities; 6],
55}
56
57impl RenderCubemapVisibleEntities {
58 pub fn get(&self, i: usize) -> &RenderVisibleMeshEntities {
59 &self.data[i]
60 }
61
62 pub fn get_mut(&mut self, i: usize) -> &mut RenderVisibleMeshEntities {
63 &mut self.data[i]
64 }
65
66 pub fn iter(&self) -> impl DoubleEndedIterator<Item = &RenderVisibleMeshEntities> {
67 self.data.iter()
68 }
69
70 pub fn iter_mut(&mut self) -> impl DoubleEndedIterator<Item = &mut RenderVisibleMeshEntities> {
71 self.data.iter_mut()
72 }
73}
74
75#[derive(Component, Clone, Debug, Default, Reflect)]
76#[reflect(Component, Default, Clone)]
77pub struct CascadesVisibleEntities {
78 #[reflect(ignore, clone)]
80 pub entities: EntityHashMap<Vec<VisibleMeshEntities>>,
81}
82
83#[derive(Component, Clone, Debug, Default, Reflect)]
84#[reflect(Component, Default, Clone)]
85pub struct RenderCascadesVisibleEntities {
86 #[reflect(ignore, clone)]
88 pub entities: EntityHashMap<Vec<RenderVisibleMeshEntities>>,
89}