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, value: T, tick: Tick) {
self.value = value;
self.tick = tick;
}
}