use bevy::app::FixedPreUpdate; use bevy::prelude::Resource; use crate::prelude::{App, Component, Query, ResMut}; use bevy_replicon::shared::replication::Replicated; #[derive(Resource)] pub struct Tick(pub u64); #[derive(Component, Default)] pub struct ServerTick(pub u64); #[derive(Component, Default)] #[require(Replicated, ServerTick)] pub struct ReplicateAndInterpolate; pub fn tick_update_plugin(app: &mut App) { app .insert_resource(Tick(0)) .add_systems(FixedPreUpdate, tick); } fn tick(mut tick_counter: ResMut, mut entities: Query<&mut ServerTick>) { tick_counter.0 += 1; for mut entity in entities.iter_mut() { entity.0 = tick_counter.0; } }