_release-content/migration-guides/bevy_scene_rename.md
In Bevy 0.19 we landed a subset of Bevy's Next Generation Scene system (known as BSN), which now lives in the bevy_scene / bevy::scene crate. However the old bevy_scene system still needs to stick around for a bit longer, as it provides some features that Bevy's Next Generation Scene system doesn't (yet!):
For this reason, we have renamed the old bevy_scene crate to bevy_world_serialization. If you were referencing bevy_scene::* or bevy::scene::* types, rename those paths to bevy_world_serialization::* and bevy::world_serialization::* respectively.
Additionally, to avoid confusion / conflicts with the new scene system, all "scene" terminology / types have been reframed as "world serialization":
Scene -> WorldAsset (as this was always just a World wrapper)SceneRoot -> WorldAssetRootDynamicScene -> DynamicWorldDynamicScene::from_scene -> DynamicWorld::from_world_assetDynamicSceneBuilder -> DynamicWorldBuilderDynamicSceneRoot -> DynamicWorldRootSceneInstanceReady -> WorldInstanceReadySceneLoader -> WorldAssetLoaderScenePlugin -> WorldSerializationPluginSceneRootTemplate -> WorldAssetRootTemplateSceneSpawner -> WorldInstanceSpawnerSceneFilter -> WorldFilterSceneLoaderError -> WorldAssetLoaderErrorSceneSpawnError -> WorldInstanceSpawnErrorGLTF scene spawning is the most likely source of breakage for most people, as round trip world serialization is a relatively niche use case. For most people, the migration should be as simple as:
// before
commands.spawn(SceneRoot(asset_server.load("scene.gltf#Scene0")));
// after
commands.spawn(WorldAssetRoot(asset_server.load("scene.gltf#Scene0")));
We know this naming is a bit awkward. Once we port GLTF loading over to BSN (hopefully in the next release), you will be able to do cool stuff like this:
bsn! {
:"scene.gltf#Scene0"
Transform { position: Vec3 { x: 10. } }
}
This would set just the x position in the GLTF scene root to x, patching on top of the position defined in the gltf scene. Cool!