From 0198c6eb37ab502ab7b3aa783cd4c97c02a6efd6 Mon Sep 17 00:00:00 2001 From: Andrew O'Connor Date: Mon, 28 Jun 2021 20:53:51 +0100 Subject: [PATCH] Fix unsetting layer bit in without fn --- crates/bevy_render/src/camera/visible_entities.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/bevy_render/src/camera/visible_entities.rs b/crates/bevy_render/src/camera/visible_entities.rs index 46b7f3b31867a..d88c681132f30 100644 --- a/crates/bevy_render/src/camera/visible_entities.rs +++ b/crates/bevy_render/src/camera/visible_entities.rs @@ -110,7 +110,7 @@ impl RenderLayers { /// Panics when called with a layer greater than `TOTAL_LAYERS - 1`. pub fn without(mut self, layer: Layer) -> Self { assert!(usize::from(layer) < Self::TOTAL_LAYERS); - self.0 |= 0 << layer; + self.0 &= !(1 << layer); self } @@ -146,6 +146,11 @@ mod rendering_mask_tests { assert_eq!(RenderLayers::layer(0).0, 1, "layer 0 is mask 1"); assert_eq!(RenderLayers::layer(1).0, 2, "layer 1 is mask 2"); assert_eq!(RenderLayers::layer(0).with(1).0, 3, "layer 0 + 1 is mask 3"); + assert_eq!( + RenderLayers::layer(0).with(1).without(0).0, + 2, + "layer 0 + 1 - 0 is mask 2" + ); assert!( RenderLayers::layer(1).intersects(&RenderLayers::layer(1)), "layers match like layers"