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;
26pub const TERRAIN_MODULES_COLLIDER_GROUP: ColliderGroup = ColliderGroup::GROUP_4;
28
29pub(crate) mod manager;
30pub(crate) mod physics;
31pub mod render;
32pub(crate) mod utils;
33
34#[doc(hidden)]
35pub mod prelude {
36 pub use crate::manager::*;
37 pub use crate::physics::terrain_physics::TerrainPhysics;
38 pub use crate::render::dependencies::terrain_buffer::{
39 TERRAIN_MATERIAL_COUNT, TerrainRenderSettings
40 };
41 pub use crate::render::extractor::*;
42 pub use crate::render::renderer::TERRAIN_LOD_COUNT;
43 pub use crate::render::renderer::TerrainRenderer;
44 pub use crate::render::renderer_gpu::{
45 TerrainChunkArrayBg, TerrainComputeArrayBg, TerrainRendererGPU
46 };
47 pub use crate::utils::cursor_pos::TerrainCursorPos;
48 pub use crate::{
49 TERRAIN_BUILDINGS_COLLIDER_GROUP, TERRAIN_COLLIDER_GROUP, TERRAIN_MODULES_COLLIDER_GROUP
50 };
51}
52
53pub struct TerrainPlugin;
54impl Plugin for TerrainPlugin {
55 fn build(&self, app: &mut App) {
56 app.add_plugins((
57 TerrainRenderPlugin,
58 TerrainPhysicsPlugin,
59 TerrainUtilsPlugin
60 ));
61 }
62}