From 0070bdccd873e186a9ccec3ecb6f1d3d83b8710b Mon Sep 17 00:00:00 2001 From: Thomas Alban <98399119+ThomasAlban@users.noreply.github.com> Date: Sat, 24 Aug 2024 14:49:54 +0100 Subject: [PATCH] Add helper methods on `Visibility` (#14898) Fixes #14825 Edit: After feedback, these are the updated methods: - `toggle_inherited_visible(&mut self)` - Toggles between `Visibility::Inherited` and `Visibility::Visible`. If the value is `Visibility::Hidden`, it remains unaffected. - `toggle_inherited_hidden(&mut self)` - Toggles between `Visibility::Inherited` and `Visibility::Hidden`. If the value is `Visibility::Visible`, it remains unaffected. - `toggle_visible_hidden(&mut self)` - Toggles between `Visibility::Visible` and `Visibility::Hidden`. If the value is `Visibility::Inherited`, it remains unaffected. --------- Co-authored-by: Chris Russell <8494645+chescock@users.noreply.github.com> --- crates/bevy_render/src/view/visibility/mod.rs | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/crates/bevy_render/src/view/visibility/mod.rs b/crates/bevy_render/src/view/visibility/mod.rs index 42c4744cdd..345055ca3d 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]