Skip to main content

fantasy_craft/physics/
plugins.rs

1use crate::{core::plugins::Plugin, physics::systems::physics_system, prelude::{ColliderLoader, GameState, RigidBodyLoader, SpeedLoader, Stage, System, TransformLoader, VelocityLoader, movement_system}};
2
3pub struct PhysicsPlugin;
4
5impl Plugin for PhysicsPlugin {
6    fn build(&self, app: &mut crate::prelude::App) {
7        app.scene_loader
8            .register("Transform", Box::new(TransformLoader))
9            .register("RigidBody", Box::new(RigidBodyLoader))
10            .register("Collider", Box::new(ColliderLoader))
11            .register("Velocity", Box::new(VelocityLoader))
12            .register("Speed", Box::new(SpeedLoader));
13
14        app
15            .add_system(Stage::Update, System::new(
16                movement_system,
17                vec![GameState::Playing]
18            ))
19            .add_system(Stage::PostUpdate, System::new(
20                physics_system,
21                vec![GameState::Playing]
22            ));
23    }
24}