@@ -136,26 +136,22 @@ fn on_insert<F: VisibilityFilter>(
136136 entities : Query < ( Entity , & F ) , ( Without < ClientVisibility > , Allow < Disabled > ) > ,
137137 mut clients : Query < ( Entity , Option < & F :: ClientComponent > , & mut ClientVisibility ) > ,
138138) {
139+ // `F` and `F::ClientComponent` could be the same,
140+ // so we need to ensure that it was not inserted into a client
141+ if clients. contains ( insert. entity ) {
142+ return ;
143+ }
144+
139145 let bit = registry. bit :: < F > ( ) ;
140- if let Ok ( ( client, client_component, mut visibility) ) = clients. get_mut ( insert. entity ) {
141- for ( entity, component) in & entities {
142- let visible = component. is_visible ( client, client_component) ;
143- debug ! (
144- "evaluating inserted `{}` to client `{client}` for entity `{entity}` to `{visible}`" ,
145- ShortName :: of:: <F >( ) ,
146- ) ;
147- visibility. set ( entity, bit, visible) ;
148- }
149- } else {
150- let ( entity, component) = entities. get ( insert. entity ) . unwrap ( ) ;
151- for ( client, client_component, mut visibility) in & mut clients {
152- let visible = component. is_visible ( client, client_component) ;
153- debug ! (
154- "evaluating inserted `{}` to entity `{entity}` for client `{client}` to `{visible}`" ,
155- ShortName :: of:: <F >( ) ,
156- ) ;
157- visibility. set ( insert. entity , bit, visible) ;
158- }
146+
147+ let ( entity, component) = entities. get ( insert. entity ) . unwrap ( ) ;
148+ for ( client, client_component, mut visibility) in & mut clients {
149+ let visible = component. is_visible ( client, client_component) ;
150+ debug ! (
151+ "evaluating inserted `{}` to entity `{entity}` for client `{client}` to `{visible}`" ,
152+ ShortName :: of:: <F >( ) ,
153+ ) ;
154+ visibility. set ( insert. entity , bit, visible) ;
159155 }
160156}
161157
@@ -188,7 +184,7 @@ fn on_remove<F: VisibilityFilter>(
188184) {
189185 // `F` and `F::ClientComponent` could be the same,
190186 // so we need to ensure that it wasn't removed from a client.
191- if clients. get ( remove. entity ) . is_ok ( ) {
187+ if clients. contains ( remove. entity ) {
192188 return ;
193189 }
194190
0 commit comments