pub struct RenderLayers(/* private fields */);
Expand description
Defines which rendering layers an entity belongs to.
A camera renders an entity only when their render layers intersect.
The Default
instance of RenderLayers
contains layer 0
, the first layer. Entities
without this component also belong to layer 0
.
An empty RenderLayers
makes the entity invisible.
Implementations§
Source§impl RenderLayers
impl RenderLayers
Sourcepub const fn layer(n: usize) -> RenderLayers
pub const fn layer(n: usize) -> RenderLayers
Create a new RenderLayers
belonging to the given layer.
This const
constructor is limited to size_of::<usize>()
layers.
If you need to support an arbitrary number of layers, use with
or from_layers
.
Examples found in repository?
More examples
22fn setup(
23 mut commands: Commands,
24 mut meshes: ResMut<Assets<Mesh>>,
25 mut materials: ResMut<Assets<StandardMaterial>>,
26) {
27 // camera
28 commands.spawn((
29 Camera3d::default(),
30 Transform::from_xyz(0.0, 0.0, 10.0).looking_at(Vec3::ZERO, Vec3::Y),
31 // Add this component to this camera to render transparent meshes using OIT
32 OrderIndependentTransparencySettings::default(),
33 RenderLayers::layer(1),
34 // Msaa currently doesn't work with OIT
35 Msaa::Off,
36 ));
37
38 // light
39 commands.spawn((
40 PointLight {
41 shadows_enabled: false,
42 ..default()
43 },
44 Transform::from_xyz(4.0, 8.0, 4.0),
45 RenderLayers::layer(1),
46 ));
47
48 // spawn help text
49 commands.spawn((
50 Text::default(),
51 Node {
52 position_type: PositionType::Absolute,
53 top: px(12),
54 left: px(12),
55 ..default()
56 },
57 RenderLayers::layer(1),
58 children![
59 TextSpan::new("Press T to toggle OIT\n"),
60 TextSpan::new("OIT Enabled"),
61 TextSpan::new("\nPress C to cycle test scenes"),
62 ],
63 ));
64
65 // spawn default scene
66 spawn_spheres(&mut commands, &mut meshes, &mut materials);
67}
68
69fn toggle_oit(
70 mut commands: Commands,
71 text: Single<Entity, With<Text>>,
72 keyboard_input: Res<ButtonInput<KeyCode>>,
73 q: Single<(Entity, Has<OrderIndependentTransparencySettings>), With<Camera3d>>,
74 mut text_writer: TextUiWriter,
75) {
76 if keyboard_input.just_pressed(KeyCode::KeyT) {
77 let (e, has_oit) = *q;
78 *text_writer.text(*text, 2) = if has_oit {
79 // Removing the component will completely disable OIT for this camera
80 commands
81 .entity(e)
82 .remove::<OrderIndependentTransparencySettings>();
83 "OIT disabled".to_string()
84 } else {
85 // Adding the component to the camera will render any transparent meshes
86 // with OIT instead of alpha blending
87 commands
88 .entity(e)
89 .insert(OrderIndependentTransparencySettings::default());
90 "OIT enabled".to_string()
91 };
92 }
93}
94
95fn cycle_scenes(
96 mut commands: Commands,
97 keyboard_input: Res<ButtonInput<KeyCode>>,
98 mut meshes: ResMut<Assets<Mesh>>,
99 mut materials: ResMut<Assets<StandardMaterial>>,
100 q: Query<Entity, With<Mesh3d>>,
101 mut scene_id: Local<usize>,
102) {
103 if keyboard_input.just_pressed(KeyCode::KeyC) {
104 // despawn current scene
105 for e in &q {
106 commands.entity(e).despawn();
107 }
108 // increment scene_id
109 *scene_id = (*scene_id + 1) % 2;
110 // spawn next scene
111 match *scene_id {
112 0 => spawn_spheres(&mut commands, &mut meshes, &mut materials),
113 1 => spawn_occlusion_test(&mut commands, &mut meshes, &mut materials),
114 _ => unreachable!(),
115 }
116 }
117}
118
119/// Spawns 3 overlapping spheres
120/// Technically, when using `alpha_to_coverage` with MSAA this particular example wouldn't break,
121/// but it breaks when disabling MSAA and is enough to show the difference between OIT enabled vs disabled.
122fn spawn_spheres(
123 commands: &mut Commands,
124 meshes: &mut Assets<Mesh>,
125 materials: &mut Assets<StandardMaterial>,
126) {
127 let pos_a = Vec3::new(-1.0, 0.75, 0.0);
128 let pos_b = Vec3::new(0.0, -0.75, 0.0);
129 let pos_c = Vec3::new(1.0, 0.75, 0.0);
130
131 let offset = Vec3::new(0.0, 0.0, 0.0);
132
133 let sphere_handle = meshes.add(Sphere::new(2.0).mesh());
134
135 let alpha = 0.25;
136
137 let render_layers = RenderLayers::layer(1);
138
139 commands.spawn((
140 Mesh3d(sphere_handle.clone()),
141 MeshMaterial3d(materials.add(StandardMaterial {
142 base_color: RED.with_alpha(alpha).into(),
143 alpha_mode: AlphaMode::Blend,
144 ..default()
145 })),
146 Transform::from_translation(pos_a + offset),
147 render_layers.clone(),
148 ));
149 commands.spawn((
150 Mesh3d(sphere_handle.clone()),
151 MeshMaterial3d(materials.add(StandardMaterial {
152 base_color: GREEN.with_alpha(alpha).into(),
153 alpha_mode: AlphaMode::Blend,
154 ..default()
155 })),
156 Transform::from_translation(pos_b + offset),
157 render_layers.clone(),
158 ));
159 commands.spawn((
160 Mesh3d(sphere_handle.clone()),
161 MeshMaterial3d(materials.add(StandardMaterial {
162 base_color: BLUE.with_alpha(alpha).into(),
163 alpha_mode: AlphaMode::Blend,
164 ..default()
165 })),
166 Transform::from_translation(pos_c + offset),
167 render_layers.clone(),
168 ));
169}
170
171/// Spawn a combination of opaque cubes and transparent spheres.
172/// This is useful to make sure transparent meshes drawn with OIT
173/// are properly occluded by opaque meshes.
174fn spawn_occlusion_test(
175 commands: &mut Commands,
176 meshes: &mut Assets<Mesh>,
177 materials: &mut Assets<StandardMaterial>,
178) {
179 let sphere_handle = meshes.add(Sphere::new(1.0).mesh());
180 let cube_handle = meshes.add(Cuboid::from_size(Vec3::ONE).mesh());
181 let cube_material = materials.add(Color::srgb(0.8, 0.7, 0.6));
182
183 let render_layers = RenderLayers::layer(1);
184
185 // front
186 let x = -2.5;
187 commands.spawn((
188 Mesh3d(cube_handle.clone()),
189 MeshMaterial3d(cube_material.clone()),
190 Transform::from_xyz(x, 0.0, 2.0),
191 render_layers.clone(),
192 ));
193 commands.spawn((
194 Mesh3d(sphere_handle.clone()),
195 MeshMaterial3d(materials.add(StandardMaterial {
196 base_color: RED.with_alpha(0.5).into(),
197 alpha_mode: AlphaMode::Blend,
198 ..default()
199 })),
200 Transform::from_xyz(x, 0., 0.),
201 render_layers.clone(),
202 ));
203
204 // intersection
205 commands.spawn((
206 Mesh3d(cube_handle.clone()),
207 MeshMaterial3d(cube_material.clone()),
208 Transform::from_xyz(x, 0.0, 1.0),
209 render_layers.clone(),
210 ));
211 commands.spawn((
212 Mesh3d(sphere_handle.clone()),
213 MeshMaterial3d(materials.add(StandardMaterial {
214 base_color: RED.with_alpha(0.5).into(),
215 alpha_mode: AlphaMode::Blend,
216 ..default()
217 })),
218 Transform::from_xyz(0., 0., 0.),
219 render_layers.clone(),
220 ));
221
222 // back
223 let x = 2.5;
224 commands.spawn((
225 Mesh3d(cube_handle.clone()),
226 MeshMaterial3d(cube_material.clone()),
227 Transform::from_xyz(x, 0.0, -2.0),
228 render_layers.clone(),
229 ));
230 commands.spawn((
231 Mesh3d(sphere_handle.clone()),
232 MeshMaterial3d(materials.add(StandardMaterial {
233 base_color: RED.with_alpha(0.5).into(),
234 alpha_mode: AlphaMode::Blend,
235 ..default()
236 })),
237 Transform::from_xyz(x, 0., 0.),
238 render_layers.clone(),
239 ));
240}
99fn spawn_view_model(
100 mut commands: Commands,
101 mut meshes: ResMut<Assets<Mesh>>,
102 mut materials: ResMut<Assets<StandardMaterial>>,
103) {
104 let arm = meshes.add(Cuboid::new(0.1, 0.1, 0.5));
105 let arm_material = materials.add(Color::from(tailwind::TEAL_200));
106
107 commands.spawn((
108 Player,
109 CameraSensitivity::default(),
110 Transform::from_xyz(0.0, 1.0, 0.0),
111 Visibility::default(),
112 children![
113 (
114 WorldModelCamera,
115 Camera3d::default(),
116 Projection::from(PerspectiveProjection {
117 fov: 90.0_f32.to_radians(),
118 ..default()
119 }),
120 ),
121 // Spawn view model camera.
122 (
123 Camera3d::default(),
124 Camera {
125 // Bump the order to render on top of the world model.
126 order: 1,
127 ..default()
128 },
129 Projection::from(PerspectiveProjection {
130 fov: 70.0_f32.to_radians(),
131 ..default()
132 }),
133 // Only render objects belonging to the view model.
134 RenderLayers::layer(VIEW_MODEL_RENDER_LAYER),
135 ),
136 // Spawn the player's right arm.
137 (
138 Mesh3d(arm),
139 MeshMaterial3d(arm_material),
140 Transform::from_xyz(0.2, -0.1, -0.25),
141 // Ensure the arm is only rendered by the view model camera.
142 RenderLayers::layer(VIEW_MODEL_RENDER_LAYER),
143 // The arm is free-floating, so shadows would look weird.
144 NotShadowCaster,
145 ),
146 ],
147 ));
148}
13fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
14 // The default camera. `IsDefaultUiCamera` makes this the default camera to render UI elements to. Alternatively, you can add the `UiTargetCamera` component to root UI nodes to define which camera they should be rendered to.
15 commands.spawn((Camera2d, IsDefaultUiCamera));
16
17 // The second camera. The higher order means that this camera will be rendered after the first camera. We will render to this camera to draw on top of the UI.
18 commands.spawn((
19 Camera2d,
20 Camera {
21 order: 1,
22 // Don't draw anything in the background, to see the previous camera.
23 clear_color: ClearColorConfig::None,
24 ..default()
25 },
26 // This camera will only render entities which are on the same render layer.
27 RenderLayers::layer(1),
28 ));
29
30 commands.spawn((
31 // We could also use a `UiTargetCamera` component here instead of the general `IsDefaultUiCamera`.
32 Node {
33 width: percent(100),
34 height: percent(100),
35 display: Display::Flex,
36 justify_content: JustifyContent::Center,
37 align_items: AlignItems::Center,
38 ..default()
39 },
40 BackgroundColor(tailwind::ROSE_400.into()),
41 children![(
42 Node {
43 height: percent(30),
44 width: percent(20),
45 min_height: px(150),
46 min_width: px(150),
47 border: UiRect::all(px(2)),
48 ..default()
49 },
50 BorderRadius::all(percent(25)),
51 BorderColor::all(Color::WHITE),
52 )],
53 ));
54
55 // This 2D object will be rendered on the second camera, on top of the default camera where the UI is rendered.
56 commands.spawn((
57 Sprite {
58 image: asset_server.load("textures/rpg/chars/sensei/sensei.png"),
59 custom_size: Some(Vec2::new(100., 100.)),
60 ..default()
61 },
62 RenderLayers::layer(1),
63 ));
64}
23fn setup(
24 mut commands: Commands,
25 mut meshes: ResMut<Assets<Mesh>>,
26 mut materials: ResMut<Assets<StandardMaterial>>,
27 mut images: ResMut<Assets<Image>>,
28) {
29 // This is the texture that will be rendered to.
30 let image = Image::new_target_texture(512, 512, TextureFormat::bevy_default());
31
32 let image_handle = images.add(image);
33
34 let cube_handle = meshes.add(Cuboid::new(4.0, 4.0, 4.0));
35 let cube_material_handle = materials.add(StandardMaterial {
36 base_color: Color::srgb(0.8, 0.7, 0.6),
37 reflectance: 0.02,
38 unlit: false,
39 ..default()
40 });
41
42 // This specifies the layer used for the first pass, which will be attached to the first pass camera and cube.
43 let first_pass_layer = RenderLayers::layer(1);
44
45 // The cube that will be rendered to the texture.
46 commands.spawn((
47 Mesh3d(cube_handle),
48 MeshMaterial3d(cube_material_handle),
49 Transform::from_translation(Vec3::new(0.0, 0.0, 1.0)),
50 FirstPassCube,
51 first_pass_layer.clone(),
52 ));
53
54 // Light
55 // NOTE: we add the light to both layers so it affects both the rendered-to-texture cube, and the cube on which we display the texture
56 // Setting the layer to RenderLayers::layer(0) would cause the main view to be lit, but the rendered-to-texture cube to be unlit.
57 // Setting the layer to RenderLayers::layer(1) would cause the rendered-to-texture cube to be lit, but the main view to be unlit.
58 commands.spawn((
59 PointLight::default(),
60 Transform::from_translation(Vec3::new(0.0, 0.0, 10.0)),
61 RenderLayers::layer(0).with(1),
62 ));
63
64 commands.spawn((
65 Camera3d::default(),
66 Camera {
67 // render before the "main pass" camera
68 order: -1,
69 target: image_handle.clone().into(),
70 clear_color: Color::WHITE.into(),
71 ..default()
72 },
73 Transform::from_translation(Vec3::new(0.0, 0.0, 15.0)).looking_at(Vec3::ZERO, Vec3::Y),
74 first_pass_layer,
75 ));
76
77 let cube_size = 4.0;
78 let cube_handle = meshes.add(Cuboid::new(cube_size, cube_size, cube_size));
79
80 // This material has the texture that has been rendered.
81 let material_handle = materials.add(StandardMaterial {
82 base_color_texture: Some(image_handle),
83 reflectance: 0.02,
84 unlit: false,
85 ..default()
86 });
87
88 // Main pass cube, with material containing the rendered first pass texture.
89 commands.spawn((
90 Mesh3d(cube_handle),
91 MeshMaterial3d(material_handle),
92 Transform::from_xyz(0.0, 0.0, 1.5).with_rotation(Quat::from_rotation_x(-PI / 5.0)),
93 MainPassCube,
94 ));
95
96 // The main pass camera.
97 commands.spawn((
98 Camera3d::default(),
99 Transform::from_xyz(0.0, 0.0, 15.0).looking_at(Vec3::ZERO, Vec3::Y),
100 ));
101}
27fn setup_scene(mut commands: Commands) {
28 // The first camera; no render target is specified, its render target will be set to the primary window automatically.
29 // This camera has no `RenderLayers` component, so it only renders entities belonging to render layer `0`.
30 commands.spawn(Camera2d);
31
32 // Spawn a second window
33 let secondary_window = commands
34 .spawn(Window {
35 title: "Secondary Window".to_owned(),
36 // Override the secondary window's scale factor and set it to double that of the primary window.
37 // This means the second window's text will use glyphs drawn at twice the resolution of the primary window's text,
38 // and they will be twice as big on screen.
39 resolution: WindowResolution::default().with_scale_factor_override(2.),
40 ..default()
41 })
42 .id();
43
44 // Spawn a second camera
45 let secondary_window_camera = commands
46 .spawn((
47 Camera2d,
48 // This camera will only render entities belonging to render layer `1`.
49 RenderLayers::layer(1),
50 Camera {
51 // Without an explicit render target, this camera would also target the primary window.
52 target: RenderTarget::Window(WindowRef::Entity(secondary_window)),
53 ..default()
54 },
55 ))
56 .id();
57
58 let node = Node {
59 position_type: PositionType::Absolute,
60 top: Val::Px(12.0),
61 left: Val::Px(12.0),
62 ..default()
63 };
64
65 let text_font = TextFont::from_font_size(30.);
66
67 // UI nodes can only be rendered by one camera at a time and ignore `RenderLayers`.
68 // This root UI node has no `UiTargetCamera` so `bevy_ui` will try to find a
69 // camera with the `IsDefaultUiCamera` marker component. When that fails (neither
70 // camera spawned here has an `IsDefaultUiCamera`), it queries for the
71 // first camera targeting the primary window and uses that.
72 commands.spawn(node.clone()).with_child((
73 Text::new("UI Text Primary Window"),
74 text_font.clone(),
75 TextShadow::default(),
76 ));
77
78 commands
79 .spawn((node, UiTargetCamera(secondary_window_camera)))
80 .with_child((
81 Text::new("UI Text Secondary Window"),
82 text_font.clone(),
83 TextShadow::default(),
84 ));
85
86 // `Text2d` belonging to render layer `0`.
87 commands.spawn((
88 Text2d::new("Text2d Primary Window"),
89 TextColor(YELLOW.into()),
90 text_font.clone(),
91 Text2dShadow::default(),
92 ));
93
94 // `Text2d` belonging to render layer `1`.
95 commands.spawn((
96 Text2d::new("Text2d Secondary Window"),
97 TextColor(YELLOW.into()),
98 text_font.clone(),
99 Text2dShadow::default(),
100 RenderLayers::layer(1),
101 ));
102
103 // This `Text2d` entity belongs to both render layers `0` and `1`, so it will be rendered by both
104 // cameras. A single text layout is generated per `Text2d` entity, targeting a specific scale
105 // factor. Since the two camera's render targets have different scale factors, the text layout
106 // will be generated using the higher scale factor (the secondary window's), and then downscaled when it is
107 // drawn by the camera targeting the primary window.
108 commands.spawn((
109 Text2d::new("Text2d Both Windows"),
110 TextColor(LIGHT_CYAN.into()),
111 text_font,
112 Text2dShadow::default(),
113 RenderLayers::from_layers(&[0, 1]),
114 Transform::from_xyz(0., -50., 0.),
115 ));
116}
Sourcepub const fn none() -> RenderLayers
pub const fn none() -> RenderLayers
Create a new RenderLayers
that belongs to no layers.
This is distinct from RenderLayers::default
, which belongs to the first layer.
Sourcepub fn from_layers(layers: &[usize]) -> RenderLayers
pub fn from_layers(layers: &[usize]) -> RenderLayers
Create a RenderLayers
from a list of layers.
Examples found in repository?
177fn spawn_lights(mut commands: Commands) {
178 commands.spawn((
179 PointLight {
180 color: Color::from(tailwind::ROSE_300),
181 shadows_enabled: true,
182 ..default()
183 },
184 Transform::from_xyz(-2.0, 4.0, -0.75),
185 // The light source illuminates both the world model and the view model.
186 RenderLayers::from_layers(&[DEFAULT_RENDER_LAYER, VIEW_MODEL_RENDER_LAYER]),
187 ));
188}
More examples
27fn setup_scene(mut commands: Commands) {
28 // The first camera; no render target is specified, its render target will be set to the primary window automatically.
29 // This camera has no `RenderLayers` component, so it only renders entities belonging to render layer `0`.
30 commands.spawn(Camera2d);
31
32 // Spawn a second window
33 let secondary_window = commands
34 .spawn(Window {
35 title: "Secondary Window".to_owned(),
36 // Override the secondary window's scale factor and set it to double that of the primary window.
37 // This means the second window's text will use glyphs drawn at twice the resolution of the primary window's text,
38 // and they will be twice as big on screen.
39 resolution: WindowResolution::default().with_scale_factor_override(2.),
40 ..default()
41 })
42 .id();
43
44 // Spawn a second camera
45 let secondary_window_camera = commands
46 .spawn((
47 Camera2d,
48 // This camera will only render entities belonging to render layer `1`.
49 RenderLayers::layer(1),
50 Camera {
51 // Without an explicit render target, this camera would also target the primary window.
52 target: RenderTarget::Window(WindowRef::Entity(secondary_window)),
53 ..default()
54 },
55 ))
56 .id();
57
58 let node = Node {
59 position_type: PositionType::Absolute,
60 top: Val::Px(12.0),
61 left: Val::Px(12.0),
62 ..default()
63 };
64
65 let text_font = TextFont::from_font_size(30.);
66
67 // UI nodes can only be rendered by one camera at a time and ignore `RenderLayers`.
68 // This root UI node has no `UiTargetCamera` so `bevy_ui` will try to find a
69 // camera with the `IsDefaultUiCamera` marker component. When that fails (neither
70 // camera spawned here has an `IsDefaultUiCamera`), it queries for the
71 // first camera targeting the primary window and uses that.
72 commands.spawn(node.clone()).with_child((
73 Text::new("UI Text Primary Window"),
74 text_font.clone(),
75 TextShadow::default(),
76 ));
77
78 commands
79 .spawn((node, UiTargetCamera(secondary_window_camera)))
80 .with_child((
81 Text::new("UI Text Secondary Window"),
82 text_font.clone(),
83 TextShadow::default(),
84 ));
85
86 // `Text2d` belonging to render layer `0`.
87 commands.spawn((
88 Text2d::new("Text2d Primary Window"),
89 TextColor(YELLOW.into()),
90 text_font.clone(),
91 Text2dShadow::default(),
92 ));
93
94 // `Text2d` belonging to render layer `1`.
95 commands.spawn((
96 Text2d::new("Text2d Secondary Window"),
97 TextColor(YELLOW.into()),
98 text_font.clone(),
99 Text2dShadow::default(),
100 RenderLayers::layer(1),
101 ));
102
103 // This `Text2d` entity belongs to both render layers `0` and `1`, so it will be rendered by both
104 // cameras. A single text layout is generated per `Text2d` entity, targeting a specific scale
105 // factor. Since the two camera's render targets have different scale factors, the text layout
106 // will be generated using the higher scale factor (the secondary window's), and then downscaled when it is
107 // drawn by the camera targeting the primary window.
108 commands.spawn((
109 Text2d::new("Text2d Both Windows"),
110 TextColor(LIGHT_CYAN.into()),
111 text_font,
112 Text2dShadow::default(),
113 RenderLayers::from_layers(&[0, 1]),
114 Transform::from_xyz(0., -50., 0.),
115 ));
116}
Sourcepub fn with(self, layer: usize) -> RenderLayers
pub fn with(self, layer: usize) -> RenderLayers
Add the given layer.
This may be called multiple times to allow an entity to belong to multiple rendering layers.
Examples found in repository?
23fn setup(
24 mut commands: Commands,
25 mut meshes: ResMut<Assets<Mesh>>,
26 mut materials: ResMut<Assets<StandardMaterial>>,
27 mut images: ResMut<Assets<Image>>,
28) {
29 // This is the texture that will be rendered to.
30 let image = Image::new_target_texture(512, 512, TextureFormat::bevy_default());
31
32 let image_handle = images.add(image);
33
34 let cube_handle = meshes.add(Cuboid::new(4.0, 4.0, 4.0));
35 let cube_material_handle = materials.add(StandardMaterial {
36 base_color: Color::srgb(0.8, 0.7, 0.6),
37 reflectance: 0.02,
38 unlit: false,
39 ..default()
40 });
41
42 // This specifies the layer used for the first pass, which will be attached to the first pass camera and cube.
43 let first_pass_layer = RenderLayers::layer(1);
44
45 // The cube that will be rendered to the texture.
46 commands.spawn((
47 Mesh3d(cube_handle),
48 MeshMaterial3d(cube_material_handle),
49 Transform::from_translation(Vec3::new(0.0, 0.0, 1.0)),
50 FirstPassCube,
51 first_pass_layer.clone(),
52 ));
53
54 // Light
55 // NOTE: we add the light to both layers so it affects both the rendered-to-texture cube, and the cube on which we display the texture
56 // Setting the layer to RenderLayers::layer(0) would cause the main view to be lit, but the rendered-to-texture cube to be unlit.
57 // Setting the layer to RenderLayers::layer(1) would cause the rendered-to-texture cube to be lit, but the main view to be unlit.
58 commands.spawn((
59 PointLight::default(),
60 Transform::from_translation(Vec3::new(0.0, 0.0, 10.0)),
61 RenderLayers::layer(0).with(1),
62 ));
63
64 commands.spawn((
65 Camera3d::default(),
66 Camera {
67 // render before the "main pass" camera
68 order: -1,
69 target: image_handle.clone().into(),
70 clear_color: Color::WHITE.into(),
71 ..default()
72 },
73 Transform::from_translation(Vec3::new(0.0, 0.0, 15.0)).looking_at(Vec3::ZERO, Vec3::Y),
74 first_pass_layer,
75 ));
76
77 let cube_size = 4.0;
78 let cube_handle = meshes.add(Cuboid::new(cube_size, cube_size, cube_size));
79
80 // This material has the texture that has been rendered.
81 let material_handle = materials.add(StandardMaterial {
82 base_color_texture: Some(image_handle),
83 reflectance: 0.02,
84 unlit: false,
85 ..default()
86 });
87
88 // Main pass cube, with material containing the rendered first pass texture.
89 commands.spawn((
90 Mesh3d(cube_handle),
91 MeshMaterial3d(material_handle),
92 Transform::from_xyz(0.0, 0.0, 1.5).with_rotation(Quat::from_rotation_x(-PI / 5.0)),
93 MainPassCube,
94 ));
95
96 // The main pass camera.
97 commands.spawn((
98 Camera3d::default(),
99 Transform::from_xyz(0.0, 0.0, 15.0).looking_at(Vec3::ZERO, Vec3::Y),
100 ));
101}
Sourcepub fn without(self, layer: usize) -> RenderLayers
pub fn without(self, layer: usize) -> RenderLayers
Removes the given rendering layer.
Sourcepub fn intersects(&self, other: &RenderLayers) -> bool
pub fn intersects(&self, other: &RenderLayers) -> bool
Determine if a RenderLayers
intersects another.
RenderLayers
s intersect if they share any common layers.
A RenderLayers
with no layers will not match any other
RenderLayers
, even another with no layers.
Sourcepub fn intersection(&self, other: &RenderLayers) -> RenderLayers
pub fn intersection(&self, other: &RenderLayers) -> RenderLayers
Returns the set of layers shared by two instances of RenderLayers
.
This corresponds to the self & other
operation.
Sourcepub fn union(&self, other: &RenderLayers) -> RenderLayers
pub fn union(&self, other: &RenderLayers) -> RenderLayers
Returns all layers included in either instance of RenderLayers
.
This corresponds to the self | other
operation.
Sourcepub fn symmetric_difference(&self, other: &RenderLayers) -> RenderLayers
pub fn symmetric_difference(&self, other: &RenderLayers) -> RenderLayers
Returns all layers included in exactly one of the instances of RenderLayers
.
This corresponds to the “exclusive or” (XOR) operation: self ^ other
.
Trait Implementations§
Source§impl BitAnd for RenderLayers
impl BitAnd for RenderLayers
Source§type Output = RenderLayers
type Output = RenderLayers
&
operator.Source§fn bitand(self, rhs: RenderLayers) -> <RenderLayers as BitAnd>::Output
fn bitand(self, rhs: RenderLayers) -> <RenderLayers as BitAnd>::Output
&
operation. Read moreSource§impl BitOr for RenderLayers
impl BitOr for RenderLayers
Source§type Output = RenderLayers
type Output = RenderLayers
|
operator.Source§fn bitor(self, rhs: RenderLayers) -> <RenderLayers as BitOr>::Output
fn bitor(self, rhs: RenderLayers) -> <RenderLayers as BitOr>::Output
|
operation. Read moreSource§impl BitXor for RenderLayers
impl BitXor for RenderLayers
Source§type Output = RenderLayers
type Output = RenderLayers
^
operator.Source§fn bitxor(self, rhs: RenderLayers) -> <RenderLayers as BitXor>::Output
fn bitxor(self, rhs: RenderLayers) -> <RenderLayers as BitXor>::Output
^
operation. Read moreSource§impl Clone for RenderLayers
impl Clone for RenderLayers
Source§fn clone(&self) -> RenderLayers
fn clone(&self) -> RenderLayers
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Component for RenderLayers
impl Component for RenderLayers
Source§const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
Source§type Mutability = Mutable
type Mutability = Mutable
Component<Mutability = Mutable>
,
while immutable components will instead have Component<Mutability = Immutable>
. Read moreSource§fn register_required_components(
_requiree: ComponentId,
required_components: &mut RequiredComponentsRegistrator<'_, '_>,
)
fn register_required_components( _requiree: ComponentId, required_components: &mut RequiredComponentsRegistrator<'_, '_>, )
Source§fn clone_behavior() -> ComponentCloneBehavior
fn clone_behavior() -> ComponentCloneBehavior
Source§fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_replace() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_replace() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>
Source§fn map_entities<E>(_this: &mut Self, _mapper: &mut E)where
E: EntityMapper,
fn map_entities<E>(_this: &mut Self, _mapper: &mut E)where
E: EntityMapper,
EntityMapper
. This is used to remap entities in contexts like scenes and entity cloning.
When deriving Component
, this is populated by annotating fields containing entities with #[entities]
Read moreSource§impl Debug for RenderLayers
impl Debug for RenderLayers
Source§impl Default for &RenderLayers
impl Default for &RenderLayers
Source§fn default() -> &RenderLayers
fn default() -> &RenderLayers
Source§impl Default for RenderLayers
impl Default for RenderLayers
Source§fn default() -> RenderLayers
fn default() -> RenderLayers
By default, this structure includes layer 0
, which represents the first layer.
This is distinct from RenderLayers::none
, which doesn’t belong to any layers.
Source§impl FromArg for RenderLayers
impl FromArg for RenderLayers
Source§impl FromIterator<usize> for RenderLayers
impl FromIterator<usize> for RenderLayers
Source§fn from_iter<T>(i: T) -> RenderLayerswhere
T: IntoIterator<Item = usize>,
fn from_iter<T>(i: T) -> RenderLayerswhere
T: IntoIterator<Item = usize>,
Source§impl FromReflect for RenderLayers
impl FromReflect for RenderLayers
Source§fn from_reflect(
reflect: &(dyn PartialReflect + 'static),
) -> Option<RenderLayers>
fn from_reflect( reflect: &(dyn PartialReflect + 'static), ) -> Option<RenderLayers>
Self
from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self
using,
constructing the value using from_reflect
if that fails. Read moreSource§impl GetOwnership for RenderLayers
impl GetOwnership for RenderLayers
Source§impl GetTypeRegistration for RenderLayers
impl GetTypeRegistration for RenderLayers
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration
for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Source§impl IntoReturn for RenderLayers
impl IntoReturn for RenderLayers
Source§fn into_return<'into_return>(self) -> Return<'into_return>where
RenderLayers: 'into_return,
fn into_return<'into_return>(self) -> Return<'into_return>where
RenderLayers: 'into_return,
Source§impl Ord for RenderLayers
impl Ord for RenderLayers
Source§fn cmp(&self, other: &RenderLayers) -> Ordering
fn cmp(&self, other: &RenderLayers) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for RenderLayers
impl PartialEq for RenderLayers
Source§impl PartialOrd for RenderLayers
impl PartialOrd for RenderLayers
Source§impl PartialReflect for RenderLayers
impl PartialReflect for RenderLayers
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn try_apply(
&mut self,
value: &(dyn PartialReflect + 'static),
) -> Result<(), ApplyError>
fn try_apply( &mut self, value: &(dyn PartialReflect + 'static), ) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Source§fn reflect_owned(self: Box<RenderLayers>) -> ReflectOwned
fn reflect_owned(self: Box<RenderLayers>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<RenderLayers>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<RenderLayers>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
fn try_as_reflect(&self) -> Option<&(dyn Reflect + 'static)>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
fn try_as_reflect_mut(&mut self) -> Option<&mut (dyn Reflect + 'static)>
Source§fn into_partial_reflect(self: Box<RenderLayers>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<RenderLayers>) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
fn as_partial_reflect(&self) -> &(dyn PartialReflect + 'static)
Source§fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
fn as_partial_reflect_mut(&mut self) -> &mut (dyn PartialReflect + 'static)
Source§fn reflect_partial_eq(
&self,
value: &(dyn PartialReflect + 'static),
) -> Option<bool>
fn reflect_partial_eq( &self, value: &(dyn PartialReflect + 'static), ) -> Option<bool>
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
Self
using reflection. Read moreSource§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn to_dynamic(&self) -> Box<dyn PartialReflect>
fn to_dynamic(&self) -> Box<dyn PartialReflect>
Source§fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
fn reflect_clone_and_take<T>(&self) -> Result<T, ReflectCloneError>
PartialReflect
, combines reflect_clone
and
take
in a useful fashion, automatically constructing an appropriate
ReflectCloneError
if the downcast fails. Read moreSource§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl Reflect for RenderLayers
impl Reflect for RenderLayers
Source§fn into_any(self: Box<RenderLayers>) -> Box<dyn Any>
fn into_any(self: Box<RenderLayers>) -> Box<dyn Any>
Box<dyn Any>
. Read moreSource§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut dyn Any
. Read moreSource§fn into_reflect(self: Box<RenderLayers>) -> Box<dyn Reflect>
fn into_reflect(self: Box<RenderLayers>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &(dyn Reflect + 'static)
fn as_reflect(&self) -> &(dyn Reflect + 'static)
Source§fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
fn as_reflect_mut(&mut self) -> &mut (dyn Reflect + 'static)
Source§impl TupleStruct for RenderLayers
impl TupleStruct for RenderLayers
Source§fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
fn field(&self, index: usize) -> Option<&(dyn PartialReflect + 'static)>
index
as a
&dyn Reflect
.Source§fn field_mut(
&mut self,
index: usize,
) -> Option<&mut (dyn PartialReflect + 'static)>
fn field_mut( &mut self, index: usize, ) -> Option<&mut (dyn PartialReflect + 'static)>
index
as a &mut dyn Reflect
.Source§fn iter_fields(&self) -> TupleStructFieldIter<'_> ⓘ
fn iter_fields(&self) -> TupleStructFieldIter<'_> ⓘ
Source§fn to_dynamic_tuple_struct(&self) -> DynamicTupleStruct
fn to_dynamic_tuple_struct(&self) -> DynamicTupleStruct
DynamicTupleStruct
from this tuple struct.Source§fn get_represented_tuple_struct_info(&self) -> Option<&'static TupleStructInfo>
fn get_represented_tuple_struct_info(&self) -> Option<&'static TupleStructInfo>
None
if TypeInfo
is not available.Source§impl TypePath for RenderLayers
impl TypePath for RenderLayers
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Source§impl Typed for RenderLayers
impl Typed for RenderLayers
impl Eq for RenderLayers
impl StructuralPartialEq for RenderLayers
Auto Trait Implementations§
impl Freeze for RenderLayers
impl RefUnwindSafe for RenderLayers
impl Send for RenderLayers
impl Sync for RenderLayers
impl Unpin for RenderLayers
impl UnwindSafe for RenderLayers
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere
C: Component,
fn component_ids( components: &mut ComponentsRegistrator<'_>, ids: &mut impl FnMut(ComponentId), )
Source§fn get_component_ids(
components: &Components,
ids: &mut impl FnMut(Option<ComponentId>),
)
fn get_component_ids( components: &Components, ids: &mut impl FnMut(Option<ComponentId>), )
Source§impl<C> BundleFromComponents for Cwhere
C: Component,
impl<C> BundleFromComponents for Cwhere
C: Component,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<C> DynamicBundle for Cwhere
C: Component,
impl<C> DynamicBundle for Cwhere
C: Component,
Source§unsafe fn get_components(
ptr: MovingPtr<'_, C>,
func: &mut impl FnMut(StorageType, OwningPtr<'_>),
) -> <C as DynamicBundle>::Effect
unsafe fn get_components( ptr: MovingPtr<'_, C>, func: &mut impl FnMut(StorageType, OwningPtr<'_>), ) -> <C as DynamicBundle>::Effect
Source§unsafe fn apply_effect(
_ptr: MovingPtr<'_, MaybeUninit<C>>,
_entity: &mut EntityWorldMut<'_>,
)
unsafe fn apply_effect( _ptr: MovingPtr<'_, MaybeUninit<C>>, _entity: &mut EntityWorldMut<'_>, )
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info
.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using default()
.
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moreSource§impl<S> GetTupleStructField for Swhere
S: TupleStruct,
impl<S> GetTupleStructField for Swhere
S: TupleStruct,
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> InitializeFromFunction<T> for T
impl<T> InitializeFromFunction<T> for T
Source§fn initialize_from_function(f: fn() -> T) -> T
fn initialize_from_function(f: fn() -> T) -> T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
Source§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.Source§impl<Ret> SpawnIfAsync<(), Ret> for Ret
impl<Ret> SpawnIfAsync<(), Ret> for Ret
Source§impl<T, O> SuperFrom<T> for Owhere
O: From<T>,
impl<T, O> SuperFrom<T> for Owhere
O: From<T>,
Source§fn super_from(input: T) -> O
fn super_from(input: T) -> O
Source§impl<T, O, M> SuperInto<O, M> for Twhere
O: SuperFrom<T, M>,
impl<T, O, M> SuperInto<O, M> for Twhere
O: SuperFrom<T, M>,
Source§fn super_into(self) -> O
fn super_into(self) -> O
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.