~starkingdoms/starkingdoms

ref: 302ee06fb6c522c2bf5d6908329d24a72dffa671 starkingdoms/crates/unified/src/server/plugins.rs -rw-r--r-- 1.2 KiB
302ee06f — core netcode: fix up PlanetDto and try to figure out flickering 6 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
31
32
33
34
35
36
use std::time::Duration;
use aeronet_transport::AeronetTransportPlugin;
use aeronet_websocket::server::WebSocketServerPlugin;
use avian2d::interpolation::PhysicsInterpolationPlugin;
use avian2d::PhysicsPlugins;
use avian2d::prelude::{Gravity, IslandPlugin};
use bevy::app::{PluginGroup, PluginGroupBuilder, ScheduleRunnerPlugin};
use crate::prelude::{App, Startup};
use crate::shared::plugins::TICK_RATE;

pub struct ServerPluginGroup;

const PHYSICS_LENGTH_UNIT: f64 = 100.0;

impl PluginGroup for ServerPluginGroup {
    fn build(self) -> PluginGroupBuilder {
        PluginGroupBuilder::start::<Self>()
            .add(ScheduleRunnerPlugin::run_loop(Duration::from_secs_f64(1.0 / TICK_RATE)))
            .add(WebSocketServerPlugin)
            .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);
    app.add_systems(Startup, setup_physics);
}

fn setup_physics() {}