use crate::shared::ecs::{CraftPartRequest, DragRequestEvent, ToggleDrillEvent}; use crate::shared::thrust::ThrustSolution; use bevy::app::{App, PluginGroup, PluginGroupBuilder}; use bevy_common_assets::toml::TomlAssetPlugin; use crate::prelude::*; use crate::shared::config::part::PartConfig; use crate::shared::config::planet::PlanetConfigCollection; use crate::shared::config::recipe::RecipesConfig; use crate::shared::config::world::GlobalWorldConfig; use crate::shared::world_config::world_config_plugin; pub struct SharedPluginGroup; impl PluginGroup for SharedPluginGroup { fn build(self) -> PluginGroupBuilder { PluginGroupBuilder::start::() .add(|app: &mut App| { app.insert_resource(Time::from_hz(20.0)); }) .add_group( PhysicsPlugins::default() .with_length_unit(100.0) .set(PhysicsInterpolationPlugin::interpolate_all()) .build() .disable::() ) .add(physics_setup_plugin) .add(register_everything) .add(world_config_plugin) /* Assets */ .add(TomlAssetPlugin::::new(&["wc.toml"])) .add(TomlAssetPlugin::::new(&["pc.toml"])) .add(TomlAssetPlugin::::new(&["part.toml"])) .add(TomlAssetPlugin::::new(&["rc.toml"])) } } pub fn register_everything(app: &mut App) { app.add_message::(); app.add_message::(); app.add_message::(); app.add_message::(); } fn physics_setup_plugin(app: &mut App) { app.insert_resource(Gravity::ZERO); app.add_systems(Startup, setup_physics); } fn setup_physics() {} /* fn setup_physics( mut rapier_config: Query<&mut RapierConfiguration>, mut rapier_context: Query<&mut RapierContextSimulation>, ) { let mut cfg = rapier_config.single_mut().unwrap(); cfg.gravity = Vec2::ZERO; let ctx = rapier_context.single_mut().unwrap(); let mut params = ctx.integration_parameters; params.num_internal_stabilization_iterations = 16; } */