diff --git a/crates/bevy_render/src/view/visibility/mod.rs b/crates/bevy_render/src/view/visibility/mod.rs index 42c4744cdd1c9..345055ca3d3f2 100644 --- a/crates/bevy_render/src/view/visibility/mod.rs +++ b/crates/bevy_render/src/view/visibility/mod.rs @@ -47,6 +47,39 @@ pub enum Visibility { Visible, } +impl Visibility { + /// Toggles between `Visibility::Inherited` and `Visibility::Visible`. + /// If the value is `Visibility::Hidden`, it remains unaffected. + #[inline] + pub fn toggle_inherited_visible(&mut self) { + *self = match *self { + Visibility::Inherited => Visibility::Visible, + Visibility::Visible => Visibility::Inherited, + _ => *self, + }; + } + /// Toggles between `Visibility::Inherited` and `Visibility::Hidden`. + /// If the value is `Visibility::Visible`, it remains unaffected. + #[inline] + pub fn toggle_inherited_hidden(&mut self) { + *self = match *self { + Visibility::Inherited => Visibility::Hidden, + Visibility::Hidden => Visibility::Inherited, + _ => *self, + }; + } + /// Toggles between `Visibility::Visible` and `Visibility::Hidden`. + /// If the value is `Visibility::Inherited`, it remains unaffected. + #[inline] + pub fn toggle_visible_hidden(&mut self) { + *self = match *self { + Visibility::Visible => Visibility::Hidden, + Visibility::Hidden => Visibility::Visible, + _ => *self, + }; + } +} + // Allows `&Visibility == Visibility` impl PartialEq for &Visibility { #[inline]