~starkingdoms/starkingdoms

ref: a1e817f70a05283dcd98068dd616ffb6a70b7753 starkingdoms/crates/unified/src/server/plugins.rs -rw-r--r-- 1.1 KiB
a1e817f7ghostly_zsh netcode: readd interpolation 5 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use std::time::Duration;
use bevy::app::{App, PluginGroup, PluginGroupBuilder, ScheduleRunnerPlugin};
use crate::prelude::*;
use crate::shared::plugins::TICK_RATE;

const PHYSICS_LENGTH_UNIT: f64 = 100.0;

pub struct ServerPluginGroup;

impl PluginGroup for ServerPluginGroup {
    fn build(self) -> PluginGroupBuilder {
        PluginGroupBuilder::start::<Self>()
            .add(ScheduleRunnerPlugin::run_loop(Duration::from_secs_f64(1.0 / TICK_RATE)))
            .add(bevy_replicon::server::ServerPlugin::default())
            .add(bevy_replicon::server::message::ServerMessagePlugin)
            .add(bevy_replicon_renet2::server::RepliconRenetServerPlugin)
            .add_group(
                PhysicsPlugins::default()
                    .with_length_unit(PHYSICS_LENGTH_UNIT)
                    .set(PhysicsInterpolationPlugin::interpolate_all())
                    .build()
                    .disable::<IslandPlugin>()
            )
            .add(physics_setup_plugin)
    }
}

fn physics_setup_plugin(app: &mut App) {
    app.insert_resource(Gravity::ZERO);
}