wde_terrain/render/dependencies/
mod.rs1use bevy::prelude::*;
2use wde_renderer::prelude::*;
3
4use crate::render::dependencies::{
5 materials::TerrainMaterialsPlugin,
6 terrain_buffer::{
7 TerrainBuffer, TerrainBufferBinding, TerrainRenderSettings,
8 update_terrain_description_buffer, update_terrain_tiles_buffer
9 },
10 terrain_mesh::TerrainRenderPassMesh
11};
12
13pub mod materials;
14pub mod terrain_buffer;
15pub mod terrain_mesh;
16
17pub struct BuffersPlugin;
18impl Plugin for BuffersPlugin {
19 fn build(&self, app: &mut App) {
20 app.get_sub_app_mut(RenderApp)
22 .unwrap()
23 .add_systems(Extract, TerrainRenderPassMesh::extract_terrain_mesh);
24
25 app.init_resource::<TerrainRenderSettings>().add_plugins((
27 TerrainMaterialsPlugin,
28 ExtractResourcePlugin::<TerrainRenderSettings>::default(),
29 RenderDataRegisterPlugin::<TerrainBuffer>::default(),
30 RenderBindingRegisterPlugin::<TerrainBufferBinding>::default()
31 ));
32 app.get_sub_app_mut(RenderApp).unwrap().add_systems(
33 Render,
34 (
35 update_terrain_description_buffer,
36 update_terrain_tiles_buffer
37 )
38 .in_set(RenderSet::Prepare)
39 );
40
41 app.init_resource::<TerrainRenderPassMesh>()
43 .add_systems(Startup, TerrainRenderPassMesh::init);
44 app.get_sub_app_mut(RenderApp)
45 .unwrap()
46 .init_resource::<TerrainRenderPassMesh>();
47 }
48}