Skip to main content

wde_pbr_outline/
lib.rs

1use bevy::prelude::*;
2use wde_renderer::prelude::*;
3
4mod extract;
5mod material;
6mod selection_area;
7mod stencil_write;
8mod transparent_outline;
9
10use extract::{ExtractedOutlineInstances, extract_outline_instances};
11use selection_area::extract::{ExtractedSelectionAreaInstances, extract_selection_area_instances};
12
13pub use material::OutlineMaterial;
14pub use selection_area::SelectionAreaMaterial;
15
16use crate::{
17    selection_area::DrawSelectionAreaPlugin, stencil_write::StencilWritePlugin,
18    transparent_outline::DrawOutlinePlugin
19};
20
21pub mod prelude {
22    pub use crate::OutlineMaterial;
23    pub use crate::SelectionAreaMaterial;
24}
25
26pub struct PbrOutlinePlugin;
27impl Plugin for PbrOutlinePlugin {
28    fn build(&self, app: &mut App) {
29        app.add_plugins((
30            DrawOutlinePlugin,
31            DrawSelectionAreaPlugin,
32            StencilWritePlugin,
33            RenderBindingRegisterPlugin::<OutlineMaterial>::default(),
34            RenderBindingRegisterPlugin::<SelectionAreaMaterial>::default()
35        ));
36
37        app.get_sub_app_mut(RenderApp)
38            .unwrap()
39            .init_resource::<ExtractedOutlineInstances>()
40            .init_resource::<ExtractedSelectionAreaInstances>()
41            .add_systems(
42                Extract,
43                (extract_outline_instances, extract_selection_area_instances)
44            );
45    }
46}