Add OutlineBundle.

This commit is contained in:
Robin KAY 2022-08-08 22:53:27 +01:00
parent 75dcc9077c
commit ce228d1c2d
2 changed files with 23 additions and 12 deletions

View File

@ -46,12 +46,14 @@ fn setup(
transform: Transform::from_xyz(0.0, 1.0, 0.0), transform: Transform::from_xyz(0.0, 1.0, 0.0),
..default() ..default()
}) })
.insert(Outline { .insert_bundle(OutlineBundle {
visible: true, outline: Outline {
colour: Color::rgba(0.0, 1.0, 0.0, 1.0), visible: true,
width: 25.0, colour: Color::rgba(0.0, 1.0, 0.0, 1.0),
width: 25.0,
},
..default()
}) })
.insert(OutlineStencil)
.insert(Wobbles); .insert(Wobbles);
commands commands
@ -67,12 +69,14 @@ fn setup(
.with_rotation(Quat::from_rotation_x(0.5 * PI)), .with_rotation(Quat::from_rotation_x(0.5 * PI)),
..default() ..default()
}) })
.insert(Outline { .insert_bundle(OutlineBundle {
visible: true, outline: Outline {
colour: Color::rgba(1.0, 0.0, 1.0, 0.3), visible: true,
width: 15.0, colour: Color::rgba(1.0, 0.0, 1.0, 0.3),
width: 15.0,
},
..default()
}) })
.insert(OutlineStencil)
.insert(Orbits); .insert(Orbits);
commands.spawn_bundle(PointLightBundle { commands.spawn_bundle(PointLightBundle {
point_light: PointLight { point_light: PointLight {

View File

@ -40,7 +40,7 @@ pub const ATTRIBUTE_OUTLINE_NORMAL: MeshVertexAttribute = MeshVertexAttribute::n
); );
/// A component for stenciling meshes during outline rendering. /// A component for stenciling meshes during outline rendering.
#[derive(Component, Default)] #[derive(Clone, Component, Default)]
pub struct OutlineStencil; pub struct OutlineStencil;
impl ExtractComponent for OutlineStencil { impl ExtractComponent for OutlineStencil {
@ -53,7 +53,7 @@ impl ExtractComponent for OutlineStencil {
} }
/// A component for rendering outlines around meshes. /// A component for rendering outlines around meshes.
#[derive(Clone, Component)] #[derive(Clone, Component, Default)]
pub struct Outline { pub struct Outline {
/// Enable rendering of the outline /// Enable rendering of the outline
pub visible: bool, pub visible: bool,
@ -63,6 +63,13 @@ pub struct Outline {
pub colour: Color, pub colour: Color,
} }
/// A bundle for rendering stenciled outlines around meshes.
#[derive(Bundle, Clone, Component, Default)]
pub struct OutlineBundle {
pub outline: Outline,
pub stencil: OutlineStencil,
}
/// Failed to generate outline normals for the mesh. /// Failed to generate outline normals for the mesh.
#[derive(thiserror::Error, Debug)] #[derive(thiserror::Error, Debug)]
pub enum GenerateOutlineNormalsError { pub enum GenerateOutlineNormalsError {