use crate::Tick;
use bevy::prelude::*;
#[derive(Component, Deref)]
pub struct Remote<T: Component> {
tick: Tick,
#[deref]
value: T,
}
impl<T: Component + Default> Default for Remote<T> {
fn default() -> Self {
Self::new(T::default())
}
}
impl<T: Component> Remote<T> {
#[inline(always)]
pub fn new(value: T) -> Self {
Self {
tick: Tick(0),
value,
}
}
#[inline(always)]
pub fn tick(&self) -> Tick {
self.tick
}
#[inline(always)]
pub fn update(&mut self, tick: Tick) -> &mut T {
self.tick = tick;
&mut self.value
}
}