Skip to main content

rscad_core/transformations/
centered.rs

1use crate::prelude_::*;
2
3#[derive(Clone, Copy, Debug, Default, PartialEq, PartialOrd)]
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5#[cfg_attr(feature = "reflect", derive(bevy_reflect::Reflect))]
6pub struct Centered<T> {
7    pub object: T,
8    pub centered: bool,
9}
10
11impl<T> Centered<T> {
12    pub fn new(object: T, centered: bool) -> Self {
13        Centered { object, centered }
14    }
15}
16
17pub trait CenterObject {
18    fn centered(self, centered: bool) -> Centered<Self>
19    where
20        Self: Object,
21        Self: Sized,
22    {
23        Centered::new(self, centered)
24    }
25}
26impl<T: Object> CenterObject for T {}
27
28impl<T: Object> Object for Centered<T> {}