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
11pub 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}