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