1
1
//! A module adding debug visualization of [`Aabb`]s.
2
2
3
3
use bevy_app:: { Plugin , PostUpdate } ;
4
- use bevy_camera:: primitives:: Aabb ;
4
+ use bevy_camera:: { primitives:: Aabb , visibility :: ViewVisibility } ;
5
5
use bevy_color:: { Color , Oklcha } ;
6
6
use bevy_ecs:: {
7
7
component:: Component ,
@@ -36,7 +36,7 @@ impl Plugin for AabbGizmoPlugin {
36
36
config. config :: < AabbGizmoConfigGroup > ( ) . 1 . draw_all
37
37
} ) ,
38
38
)
39
- . after ( bevy_camera:: visibility:: VisibilitySystems :: CalculateBounds )
39
+ . after ( bevy_camera:: visibility:: VisibilitySystems :: MarkNewlyHiddenEntitiesInvisible )
40
40
. after ( TransformSystems :: Propagate ) ,
41
41
) ;
42
42
}
@@ -70,10 +70,20 @@ pub struct ShowAabbGizmo {
70
70
}
71
71
72
72
fn draw_aabbs (
73
- query : Query < ( Entity , & Aabb , & GlobalTransform , & ShowAabbGizmo ) > ,
73
+ query : Query < (
74
+ Entity ,
75
+ & Aabb ,
76
+ & GlobalTransform ,
77
+ Option < & ViewVisibility > ,
78
+ & ShowAabbGizmo ,
79
+ ) > ,
74
80
mut gizmos : Gizmos < AabbGizmoConfigGroup > ,
75
81
) {
76
- for ( entity, & aabb, & transform, gizmo) in & query {
82
+ for ( entity, & aabb, & transform, view_visibility, gizmo) in & query {
83
+ if !is_visible ( view_visibility) {
84
+ continue ;
85
+ }
86
+
77
87
let color = gizmo
78
88
. color
79
89
. or ( gizmos. config_ext . default_color )
@@ -83,10 +93,17 @@ fn draw_aabbs(
83
93
}
84
94
85
95
fn draw_all_aabbs (
86
- query : Query < ( Entity , & Aabb , & GlobalTransform ) , Without < ShowAabbGizmo > > ,
96
+ query : Query <
97
+ ( Entity , & Aabb , & GlobalTransform , Option < & ViewVisibility > ) ,
98
+ Without < ShowAabbGizmo > ,
99
+ > ,
87
100
mut gizmos : Gizmos < AabbGizmoConfigGroup > ,
88
101
) {
89
- for ( entity, & aabb, & transform) in & query {
102
+ for ( entity, & aabb, & transform, view_visibility) in & query {
103
+ if !is_visible ( view_visibility) {
104
+ continue ;
105
+ }
106
+
90
107
let color = gizmos
91
108
. config_ext
92
109
. default_color
@@ -95,6 +112,10 @@ fn draw_all_aabbs(
95
112
}
96
113
}
97
114
115
+ fn is_visible ( view_visibility : Option < & ViewVisibility > ) -> bool {
116
+ view_visibility. is_some_and ( |v| v. get ( ) )
117
+ }
118
+
98
119
fn color_from_entity ( entity : Entity ) -> Color {
99
120
Oklcha :: sequential_dispersed ( entity. index ( ) ) . into ( )
100
121
}
0 commit comments