use bevy::{ ecs::prelude::*, math::Vec3, pbr2::{PbrBundle, PointLightBundle, StandardMaterial}, prelude::{App, Assets, Transform}, render2::{ camera::OrthographicCameraBundle, color::Color, mesh::{shape, Mesh}, }, PipelinedDefaultPlugins, }; fn main() { App::new() .add_plugins(PipelinedDefaultPlugins) .add_startup_system(setup.system()) .run(); } /// set up a simple 3D scene fn setup( mut commands: Commands, mut meshes: ResMut>, mut materials: ResMut>, ) { // set up the camera let mut camera = OrthographicCameraBundle::new_3d(); camera.orthographic_projection.scale = 3.0; camera.transform = Transform::from_xyz(5.0, 5.0, 5.0).looking_at(Vec3::ZERO, Vec3::Y); // camera commands.spawn_bundle(camera); // plane commands.spawn_bundle(PbrBundle { mesh: meshes.add(Mesh::from(shape::Plane { size: 5.0 })), material: materials.add(Color::rgb(0.3, 0.5, 0.3).into()), ..Default::default() }); // cubes commands.spawn_bundle(PbrBundle { mesh: meshes.add(Mesh::from(shape::Cube { size: 1.0 })), material: materials.add(Color::rgb(0.8, 0.7, 0.6).into()), transform: Transform::from_xyz(1.5, 0.5, 1.5), ..Default::default() }); commands.spawn_bundle(PbrBundle { mesh: meshes.add(Mesh::from(shape::Cube { size: 1.0 })), material: materials.add(Color::rgb(0.8, 0.7, 0.6).into()), transform: Transform::from_xyz(1.5, 0.5, -1.5), ..Default::default() }); commands.spawn_bundle(PbrBundle { mesh: meshes.add(Mesh::from(shape::Cube { size: 1.0 })), material: materials.add(Color::rgb(0.8, 0.7, 0.6).into()), transform: Transform::from_xyz(-1.5, 0.5, 1.5), ..Default::default() }); commands.spawn_bundle(PbrBundle { mesh: meshes.add(Mesh::from(shape::Cube { size: 1.0 })), material: materials.add(Color::rgb(0.8, 0.7, 0.6).into()), transform: Transform::from_xyz(-1.5, 0.5, -1.5), ..Default::default() }); // light commands.spawn_bundle(PointLightBundle { transform: Transform::from_xyz(3.0, 8.0, 5.0), ..Default::default() }); }