pub fn default<T>() -> Twhere
T: Default,
Expand description
An ergonomic abbreviation for Default::default()
to make initializing structs easier.
This is especially helpful when combined with “struct update syntax”.
use bevy_utils::default;
#[derive(Default)]
struct Foo {
a: usize,
b: usize,
c: usize,
}
// Normally you would initialize a struct with defaults using "struct update syntax"
// combined with `Default::default()`. This example sets `Foo::bar` to 10 and the remaining
// values to their defaults.
let foo = Foo {
a: 10,
..Default::default()
};
// But now you can do this, which is equivalent:
let foo = Foo {
a: 10,
..default()
};
Examples found in repository?
More examples
examples/3d/spherical_area_lights.rs (line 9)
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
fn main() {
App::new()
.insert_resource(AmbientLight {
brightness: 60.0,
..default()
})
.add_plugins(DefaultPlugins)
.add_systems(Startup, setup)
.run();
}
fn setup(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
// camera
commands.spawn(Camera3dBundle {
transform: Transform::from_xyz(0.2, 1.5, 2.5).looking_at(Vec3::ZERO, Vec3::Y),
..default()
});
// plane
commands.spawn(PbrBundle {
mesh: meshes.add(Plane3d::default().mesh().size(100.0, 100.0)),
material: materials.add(StandardMaterial {
base_color: Color::rgb(0.2, 0.2, 0.2),
perceptual_roughness: 0.08,
..default()
}),
..default()
});
const COUNT: usize = 6;
let position_range = -2.0..2.0;
let radius_range = 0.0..0.4;
let pos_len = position_range.end - position_range.start;
let radius_len = radius_range.end - radius_range.start;
let mesh = meshes.add(Sphere::new(1.0).mesh().uv(120, 64));
for i in 0..COUNT {
let percent = i as f32 / COUNT as f32;
let radius = radius_range.start + percent * radius_len;
// sphere light
commands
.spawn(PbrBundle {
mesh: mesh.clone(),
material: materials.add(StandardMaterial {
base_color: Color::rgb(0.5, 0.5, 1.0),
unlit: true,
..default()
}),
transform: Transform::from_xyz(position_range.start + percent * pos_len, 0.3, 0.0)
.with_scale(Vec3::splat(radius)),
..default()
})
.with_children(|children| {
children.spawn(PointLightBundle {
point_light: PointLight {
radius,
color: Color::rgb(0.2, 0.2, 1.0),
..default()
},
..default()
});
});
}
}
Additional examples can be found in:
- examples/2d/sprite.rs
- examples/animation/gltf_skinned_mesh.rs
- examples/animation/custom_skinned_mesh.rs
- examples/3d/reflection_probes.rs
- examples/3d/spotlight.rs
- examples/3d/ssao.rs
- examples/audio/decodable.rs
- examples/2d/sprite_slice.rs
- examples/ecs/removal_detection.rs
- examples/app/no_renderer.rs
- examples/3d/lightmaps.rs
- examples/audio/spatial_audio_2d.rs
- examples/3d/fog.rs
- examples/2d/move_sprite.rs
- examples/math/render_primitives.rs
- examples/ui/grid.rs
- examples/asset/asset_decompression.rs
- examples/scene/scene.rs
- examples/2d/mesh2d.rs
- examples/app/return_after_run.rs
- examples/2d/sprite_flipping.rs
- examples/ui/text_debug.rs
- tests/window/minimising.rs
- examples/games/alien_cake_addict.rs
- examples/window/scale_factor_override.rs
- examples/animation/morph_targets.rs
- examples/app/logs.rs
- examples/shader/compute_shader_game_of_life.rs
- examples/shader/animate_shader.rs
- examples/async_tasks/external_source_external_thread.rs
- examples/ui/ui_scaling.rs
- examples/2d/sprite_tile.rs
- examples/ecs/parallel_query.rs
- examples/window/window_resizing.rs
- examples/2d/custom_gltf_vertex_attribute.rs
- examples/shader/shader_material_2d.rs
- examples/shader/fallback_image.rs
- examples/ecs/system_piping.rs
- examples/shader/shader_material.rs
- examples/ui/window_fallthrough.rs
- examples/3d/3d_viewport_to_world.rs
- examples/shader/texture_binding_array.rs
- examples/2d/pixel_grid_snap.rs
- examples/3d/transmission.rs
- examples/window/transparent_window.rs
- examples/stress_tests/text_pipeline.rs
- examples/stress_tests/many_glyphs.rs
- tests/window/resizing.rs
- examples/stress_tests/many_lights.rs
- examples/shader/custom_vertex_attribute.rs
- examples/stress_tests/many_gizmos.rs
- examples/2d/transparency_2d.rs
- examples/transforms/3d_rotation.rs
- examples/ui/font_atlas_debug.rs
- examples/3d/atmospheric_fog.rs
- examples/transforms/scale.rs
- examples/games/breakout.rs
- examples/asset/embedded_asset.rs
- examples/transforms/translation.rs
- examples/shader/shader_defs.rs
- examples/shader/shader_prepass.rs
- examples/2d/sprite_sheet.rs
- examples/ui/ui_material.rs
- examples/stress_tests/many_animated_sprites.rs
- examples/stress_tests/many_cubes.rs
- examples/3d/animated_material.rs
- examples/3d/3d_scene.rs
- examples/stress_tests/many_sprites.rs
- examples/shader/shader_material_screenspace_texture.rs
- examples/shader/post_processing.rs
- examples/games/game_menu.rs
- examples/window/low_power.rs
- examples/3d/tonemapping.rs
- examples/3d/skybox.rs
- examples/3d/parenting.rs
- examples/3d/lines.rs
- examples/3d/wireframe.rs
- examples/3d/load_gltf.rs
- examples/2d/2d_shapes.rs
- examples/3d/two_passes.rs
- examples/3d/update_gltf_scene.rs
- examples/shader/shader_instancing.rs
- examples/window/screenshot.rs
- examples/stress_tests/many_foxes.rs
- examples/3d/deterministic.rs
- examples/stress_tests/many_buttons.rs
- examples/stress_tests/bevymark.rs
- examples/ecs/state.rs
- examples/animation/cubic_curve.rs
- examples/2d/mesh2d_vertex_color_texture.rs
- examples/ecs/hierarchy.rs
- examples/window/window_settings.rs
- examples/shader/extended_material.rs
- examples/ui/button.rs
- examples/3d/vertex_colors.rs
- examples/3d/orthographic.rs
- examples/3d/generate_custom_mesh.rs
- examples/ui/relative_cursor_position.rs
- examples/window/multiple_windows.rs
- examples/3d/3d_shapes.rs
- examples/transforms/transform.rs
- examples/ui/ui_texture_atlas.rs
- examples/animation/animated_fox.rs
- examples/3d/3d_gizmos.rs
- examples/games/contributors.rs
- examples/stress_tests/transform_hierarchy.rs
- examples/2d/rotation.rs
- examples/2d/bloom_2d.rs
- examples/3d/irradiance_volumes.rs
- examples/ecs/nondeterministic_system_order.rs
- examples/ui/ui_texture_slice.rs
- examples/audio/spatial_audio_3d.rs
- examples/input/text_input.rs
- examples/2d/bounding_2d.rs
- examples/ui/overflow_debug.rs
- examples/3d/texture.rs
- examples/async_tasks/async_compute.rs
- examples/ui/transparency_ui.rs
- examples/3d/shadow_caster_receiver.rs
- examples/3d/bloom_3d.rs
- examples/games/stepping.rs
- examples/ui/viewport_debug.rs
- examples/3d/transparency_3d.rs
- examples/ecs/iter_combinations.rs
- examples/time/virtual_time.rs
- examples/3d/anti_aliasing.rs
- examples/ui/render_ui_to_texture.rs
- examples/ui/text.rs
- examples/asset/asset_loading.rs
- examples/ui/text_wrap_debug.rs
- examples/3d/pbr.rs
- examples/3d/render_to_texture.rs
- examples/ui/overflow.rs
- examples/ui/display_and_visibility.rs
- examples/2d/text2d.rs
- examples/2d/texture_atlas.rs
- examples/ui/z_index.rs
- examples/3d/parallax_mapping.rs
- examples/3d/split_screen.rs
- examples/3d/shadow_biases.rs
- examples/animation/animated_transform.rs
- examples/3d/deferred_rendering.rs
- examples/3d/blend_modes.rs
- examples/3d/lighting.rs
- examples/ui/ui.rs