Rename OutlinePlane to OutlineDepth.
This commit is contained in:
parent
e1c845c434
commit
55dd3a07a8
@ -83,7 +83,7 @@ fn setup(
|
|||||||
},
|
},
|
||||||
..default()
|
..default()
|
||||||
})
|
})
|
||||||
.insert(InheritOutlinePlane);
|
.insert(InheritOutlineDepth);
|
||||||
parent
|
parent
|
||||||
.spawn_bundle(PbrBundle {
|
.spawn_bundle(PbrBundle {
|
||||||
mesh: meshes.add(
|
mesh: meshes.add(
|
||||||
@ -108,7 +108,7 @@ fn setup(
|
|||||||
},
|
},
|
||||||
..default()
|
..default()
|
||||||
})
|
})
|
||||||
.insert(InheritOutlinePlane);
|
.insert(InheritOutlineDepth);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Add plane, light source, and camera
|
// Add plane, light source, and camera
|
||||||
|
@ -1,27 +1,27 @@
|
|||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
|
|
||||||
/// A component for storing the computed plane on which the outline lies.
|
/// A component for storing the computed depth at which the outline lies.
|
||||||
#[derive(Clone, Component, Default)]
|
#[derive(Clone, Component, Default)]
|
||||||
pub struct ComputedOutlinePlane {
|
pub struct ComputedOutlineDepth {
|
||||||
pub(crate) plane: Vec3,
|
pub(crate) plane: Vec3,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A component which specifies that this entity lies on the same plane as its parent.
|
/// A component which specifies that this entity lies at the same depth as its parent.
|
||||||
#[derive(Clone, Component, Default)]
|
#[derive(Clone, Component, Default)]
|
||||||
pub struct InheritOutlinePlane;
|
pub struct InheritOutlineDepth;
|
||||||
|
|
||||||
#[allow(clippy::type_complexity)]
|
#[allow(clippy::type_complexity)]
|
||||||
pub(crate) fn compute_outline_plane(
|
pub(crate) fn compute_outline_depth(
|
||||||
mut root_query: Query<
|
mut root_query: Query<
|
||||||
(
|
(
|
||||||
&mut ComputedOutlinePlane,
|
&mut ComputedOutlineDepth,
|
||||||
&GlobalTransform,
|
&GlobalTransform,
|
||||||
Changed<GlobalTransform>,
|
Changed<GlobalTransform>,
|
||||||
Option<(&Children, Changed<Children>)>,
|
Option<(&Children, Changed<Children>)>,
|
||||||
),
|
),
|
||||||
Without<InheritOutlinePlane>,
|
Without<InheritOutlineDepth>,
|
||||||
>,
|
>,
|
||||||
mut computed_query: Query<(&mut ComputedOutlinePlane, Changed<InheritOutlinePlane>)>,
|
mut computed_query: Query<(&mut ComputedOutlineDepth, Changed<InheritOutlineDepth>)>,
|
||||||
child_query: Query<(&Children, Changed<Children>)>,
|
child_query: Query<(&Children, Changed<Children>)>,
|
||||||
) {
|
) {
|
||||||
for (mut computed, transform, changed_transform, children) in root_query.iter_mut() {
|
for (mut computed, transform, changed_transform, children) in root_query.iter_mut() {
|
||||||
@ -32,7 +32,7 @@ pub(crate) fn compute_outline_plane(
|
|||||||
if let Some((cs, changed_children)) = children {
|
if let Some((cs, changed_children)) = children {
|
||||||
let changed2 = changed_children || changed_transform;
|
let changed2 = changed_children || changed_transform;
|
||||||
for child in cs.iter() {
|
for child in cs.iter() {
|
||||||
propagate_outline_planes(
|
propagate_outline_depth(
|
||||||
&computed,
|
&computed,
|
||||||
changed2,
|
changed2,
|
||||||
*child,
|
*child,
|
||||||
@ -44,11 +44,11 @@ pub(crate) fn compute_outline_plane(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn propagate_outline_planes(
|
fn propagate_outline_depth(
|
||||||
root_computed: &ComputedOutlinePlane,
|
root_computed: &ComputedOutlineDepth,
|
||||||
changed: bool,
|
changed: bool,
|
||||||
entity: Entity,
|
entity: Entity,
|
||||||
computed_query: &mut Query<(&mut ComputedOutlinePlane, Changed<InheritOutlinePlane>)>,
|
computed_query: &mut Query<(&mut ComputedOutlineDepth, Changed<InheritOutlineDepth>)>,
|
||||||
child_query: &Query<(&Children, Changed<Children>)>,
|
child_query: &Query<(&Children, Changed<Children>)>,
|
||||||
) {
|
) {
|
||||||
if let Ok((mut computed, changed_inherit)) = computed_query.get_mut(entity) {
|
if let Ok((mut computed, changed_inherit)) = computed_query.get_mut(entity) {
|
||||||
@ -58,7 +58,7 @@ fn propagate_outline_planes(
|
|||||||
if let Ok((cs, changed_children)) = child_query.get(entity) {
|
if let Ok((cs, changed_children)) = child_query.get(entity) {
|
||||||
let changed2 = changed_children || changed_inherit || changed;
|
let changed2 = changed_children || changed_inherit || changed;
|
||||||
for child in cs.iter() {
|
for child in cs.iter() {
|
||||||
propagate_outline_planes(
|
propagate_outline_depth(
|
||||||
root_computed,
|
root_computed,
|
||||||
changed2,
|
changed2,
|
||||||
*child,
|
*child,
|
||||||
|
@ -94,14 +94,14 @@ pub struct Outline {
|
|||||||
pub struct OutlineBundle {
|
pub struct OutlineBundle {
|
||||||
pub outline: Outline,
|
pub outline: Outline,
|
||||||
pub stencil: OutlineStencil,
|
pub stencil: OutlineStencil,
|
||||||
pub plane: ComputedOutlinePlane,
|
pub plane: ComputedOutlineDepth,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A bundle for stenciling meshes in the outlining pass.
|
/// A bundle for stenciling meshes in the outlining pass.
|
||||||
#[derive(Bundle, Clone, Default)]
|
#[derive(Bundle, Clone, Default)]
|
||||||
pub struct OutlineStencilBundle {
|
pub struct OutlineStencilBundle {
|
||||||
pub stencil: OutlineStencil,
|
pub stencil: OutlineStencil,
|
||||||
pub plane: ComputedOutlinePlane,
|
pub plane: ComputedOutlineDepth,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Adds support for rendering outlines.
|
/// Adds support for rendering outlines.
|
||||||
@ -130,7 +130,7 @@ impl Plugin for OutlinePlugin {
|
|||||||
.add_plugin(UniformComponentPlugin::<OutlineViewUniform>::default())
|
.add_plugin(UniformComponentPlugin::<OutlineViewUniform>::default())
|
||||||
.add_system_to_stage(
|
.add_system_to_stage(
|
||||||
CoreStage::PostUpdate,
|
CoreStage::PostUpdate,
|
||||||
compute_outline_plane.after(TransformSystem::TransformPropagate),
|
compute_outline_depth.after(TransformSystem::TransformPropagate),
|
||||||
)
|
)
|
||||||
.sub_app_mut(RenderApp)
|
.sub_app_mut(RenderApp)
|
||||||
.init_resource::<DrawFunctions<StencilOutline>>()
|
.init_resource::<DrawFunctions<StencilOutline>>()
|
||||||
|
@ -13,7 +13,7 @@ use bevy::{
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{pipeline::OutlinePipeline, ComputedOutlinePlane, Outline, OutlineStencil};
|
use crate::{pipeline::OutlinePipeline, ComputedOutlineDepth, Outline, OutlineStencil};
|
||||||
|
|
||||||
#[derive(Clone, Component, ShaderType)]
|
#[derive(Clone, Component, ShaderType)]
|
||||||
pub struct OutlineStencilUniform {
|
pub struct OutlineStencilUniform {
|
||||||
@ -44,7 +44,7 @@ pub struct OutlineBindGroup {
|
|||||||
|
|
||||||
pub fn extract_outline_stencil_uniforms(
|
pub fn extract_outline_stencil_uniforms(
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
query: Extract<Query<(Entity, &ComputedOutlinePlane), With<OutlineStencil>>>,
|
query: Extract<Query<(Entity, &ComputedOutlineDepth), With<OutlineStencil>>>,
|
||||||
) {
|
) {
|
||||||
for (entity, computed) in query.iter() {
|
for (entity, computed) in query.iter() {
|
||||||
commands.get_or_spawn(entity).insert(OutlineStencilUniform {
|
commands.get_or_spawn(entity).insert(OutlineStencilUniform {
|
||||||
@ -55,7 +55,7 @@ pub fn extract_outline_stencil_uniforms(
|
|||||||
|
|
||||||
pub fn extract_outline_uniforms(
|
pub fn extract_outline_uniforms(
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
query: Extract<Query<(Entity, &Outline, &ComputedOutlinePlane)>>,
|
query: Extract<Query<(Entity, &Outline, &ComputedOutlineDepth)>>,
|
||||||
) {
|
) {
|
||||||
for (entity, outline, computed) in query.iter() {
|
for (entity, outline, computed) in query.iter() {
|
||||||
if !outline.visible || outline.colour.a() == 0.0 {
|
if !outline.visible || outline.colour.a() == 0.0 {
|
||||||
|
Loading…
Reference in New Issue
Block a user