//! Update a scene from a glTF file, either by spawning the scene as a child of another entity, //! or by accessing the entities of the scene. use bevy::prelude::*; fn main() { App::new() .add_plugins(DefaultPlugins) .add_systems(Startup, setup) .add_systems(Update, move_scene_entities) .run(); } #[derive(Component)] struct MovedScene; fn setup(mut commands: Commands, asset_server: Res) { commands.spawn(PointLightBundle { transform: Transform::from_xyz(4.0, 5.0, 4.0), ..default() }); commands.spawn(Camera3dBundle { transform: Transform::from_xyz(1.05, 0.9, 1.5) .looking_at(Vec3::new(0.0, 0.3, 0.0), Vec3::Y), ..default() }); // Spawn the scene as a child of this entity at the given transform commands.spawn(SceneBundle { transform: Transform::from_xyz(0.0, 0.0, -1.0), scene: asset_server.load("models/FlightHelmet/FlightHelmet.gltf#Scene0"), ..default() }); // Spawn a second scene, and add a tag component to be able to target it later commands.spawn(( SceneBundle { scene: asset_server.load("models/FlightHelmet/FlightHelmet.gltf#Scene0"), ..default() }, MovedScene, )); } // This system will move all entities that are descendants of MovedScene (which will be all entities spawned in the scene) fn move_scene_entities( time: Res