Skip to main content

bevy_locomotion/
lib.rs

1pub mod camera;
2pub mod physics;
3pub mod player;
4
5pub use camera::CameraPlugin;
6pub use physics::PhysicsPlugin;
7pub use player::PlayerPlugin;
8
9use bevy::prelude::*;
10
11/// Unified plugin that adds physics, player controller, and camera systems.
12pub struct BevyLocomotionPlugin;
13
14impl Plugin for BevyLocomotionPlugin {
15    fn build(&self, app: &mut App) {
16        if !app.is_plugin_added::<PhysicsPlugin>() {
17            app.add_plugins(PhysicsPlugin);
18        }
19        if !app.is_plugin_added::<PlayerPlugin>() {
20            app.add_plugins(PlayerPlugin);
21        }
22        if !app.is_plugin_added::<CameraPlugin>() {
23            app.add_plugins(CameraPlugin);
24        }
25    }
26}
27
28pub mod prelude {
29    pub use crate::camera::{CameraConfig, CameraPlugin, FpsCamera};
30    pub use crate::physics::{GameLayer, PhysicsPlugin};
31    pub use crate::player::{
32        spawn_player, Crouching, ForceSlide, ForcedSliding, Grounded, Ladder, LedgeClimbing,
33        LedgeGrabbable, LedgeGrabbing, OnLadder, Player, PlayerAudioMessage, PlayerConfig,
34        PlayerPlugin, PlayerVelocity, Sliding, Sprinting,
35    };
36    pub use crate::BevyLocomotionPlugin;
37}