notation_bevy_utils 0.4.2

Fun notation - bevy utils
use bevy::prelude::*;

use crate::prelude::BevyUtil;

#[derive(Bundle, Debug)]
pub struct SingleBundle<T: Component> {
    pub name: Name,
    pub value: T,
    pub transform: Transform,
    pub global_transform: GlobalTransform,
}

impl<T: Component> From<(String, T, Transform)> for SingleBundle<T> {
    fn from(v: (String, T, Transform)) -> Self {
        Self {
            name: BevyUtil::calc_name(v.0),
            value: v.1,
            transform: v.2,
            global_transform: GlobalTransform::default(),
        }
    }
}
impl<T: Component + ToString> From<(T, Transform)> for SingleBundle<T> {
    fn from(v: (T, Transform)) -> Self {
        (v.0.to_string(), v.0, v.1).into()
    }
}
impl<T: Component + ToString> From<T> for SingleBundle<T> {
    fn from(v: T) -> Self {
        (v, Transform::default()).into()
    }
}

#[derive(Clone, Debug, Component)]
pub struct SingleData<T: Send + Sync + 'static>(pub T);

impl<T: ToString + Send + Sync + 'static> ToString for SingleData<T> {
    fn to_string(&self) -> String {
        self.0.to_string()
    }
}

impl<T: ToString + Send + Sync + 'static> From<T> for SingleBundle<SingleData<T>> {
    fn from(v: T) -> Self {
        (SingleData::<T>(v), Transform::default()).into()
    }
}