rscad_core/transformations/
centered.rs1use 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> {}