1use bevy::prelude::*;
18use wde_physics::prelude::*;
19
20use crate::{
21 physics::TerrainPhysicsPlugin, render::TerrainRenderPlugin, utils::TerrainUtilsPlugin
22};
23
24pub const TERRAIN_COLLIDER_GROUP: ColliderGroup = ColliderGroup::GROUP_1;
25pub const TERRAIN_BUILDINGS_COLLIDER_GROUP: ColliderGroup = ColliderGroup::GROUP_2;
26
27pub(crate) mod manager;
28pub(crate) mod physics;
29pub mod render;
30pub(crate) mod utils;
31
32#[doc(hidden)]
33pub mod prelude {
34 pub use crate::manager::*;
35 pub use crate::physics::terrain_physics::TerrainPhysics;
36 pub use crate::render::dependencies::terrain_buffer::TerrainRenderSettings;
37 pub use crate::render::extractor::*;
38 pub use crate::render::renderer::TerrainRenderer;
39 pub use crate::render::renderer_gpu::{
40 TerrainChunkArrayBg, TerrainComputeArrayBg, TerrainRendererGPU
41 };
42 pub use crate::utils::cursor_pos::TerrainCursorPos;
43 pub use crate::{TERRAIN_BUILDINGS_COLLIDER_GROUP, TERRAIN_COLLIDER_GROUP};
44}
45
46pub struct TerrainPlugin;
47impl Plugin for TerrainPlugin {
48 fn build(&self, app: &mut App) {
49 app.add_plugins((
50 TerrainRenderPlugin,
51 TerrainPhysicsPlugin,
52 TerrainUtilsPlugin
53 ));
54 }
55}