use bevy::prelude::*; /// This example illustrates various ways to load assets fn main() { App::build() .insert_resource(Msaa { samples: 4 }) .add_plugins(DefaultPlugins) .add_startup_system(setup.system()) .run(); } fn setup( mut commands: Commands, asset_server: Res, meshes: Res>, mut materials: ResMut>, ) { // By default AssetServer will load assets from inside the "assets" folder // For example, the next line will load "assets/models/cube/cube.gltf#Mesh0/Primitive0" let cube_handle = asset_server.load("models/cube/cube.gltf#Mesh0/Primitive0"); let sphere_handle = asset_server.load("models/sphere/sphere.gltf#Mesh0/Primitive0"); // All assets end up in their Assets collection once they are done loading: if let Some(sphere) = meshes.get(&sphere_handle) { // You might notice that this doesn't run! This is because assets load in parallel without // blocking. When an asset has loaded, it will appear in relevant Assets // collection. println!("{:?}", sphere.primitive_topology()); } else { println!("sphere hasn't loaded yet"); } // You can load all assets in a folder like this. They will be loaded in parallel without // blocking let _scenes: Vec = asset_server.load_folder("models/monkey").unwrap(); // Then any asset in the folder can be accessed like this: let monkey_handle = asset_server.get_handle("models/monkey/Monkey.gltf#Mesh0/Primitive0"); // You can also add assets directly to their Assets storage: let material_handle = materials.add(StandardMaterial { base_color: Color::rgb(0.8, 0.7, 0.6), ..Default::default() }); // monkey commands.spawn_bundle(PbrBundle { mesh: monkey_handle, material: material_handle.clone(), transform: Transform::from_xyz(-3.0, 0.0, 0.0), ..Default::default() }); // cube commands.spawn_bundle(PbrBundle { mesh: cube_handle, material: material_handle.clone(), transform: Transform::from_xyz(0.0, 0.0, 0.0), ..Default::default() }); // sphere commands.spawn_bundle(PbrBundle { mesh: sphere_handle, material: material_handle, transform: Transform::from_xyz(3.0, 0.0, 0.0), ..Default::default() }); // light commands.spawn_bundle(LightBundle { transform: Transform::from_xyz(4.0, 5.0, 4.0), ..Default::default() }); // camera commands.spawn_bundle(PerspectiveCameraBundle { transform: Transform::from_xyz(0.0, 3.0, 10.0).looking_at(Vec3::ZERO, Vec3::Y), ..Default::default() }); }