- gltf_auto_export and bevy_components have been replaced with a single Blenvy add-on for simplicity , I recomend reading the documentation
- settings are not transfered from the legacy add-ons !
- first uninstall the old add-ons
- install Blenvy
- configure Blenvy (for these , see the Blenvy add-on docs)
- upgrade your components
- no more need to add your components to an empty called xxx_components, you can now directly add your components to the blueprint's collection itself
- you will need to "upgrade" your components from the previous add-on, as they are stored in a completely different way
Up until now , it was not possible to have multiple components with the same name (ie foo::bar::componentA & some::other::componentA) as all the logic was based on short names, this is not an issue anymore
- the previous stripped down gltf export settings are not part of the add-on anymore, please configure them like this:
- you need to reconfigure your auto export settings , as they have changed significantly as has their storage
- the new crate doesn't even really need configuring, so
- in your cargo.toml file, replace any references to the old crates (bevy_gltf_components, bevy_gltf_blueprints, bevy_registry_export, bevy_gltf_save_load etc) with:
# Cargo.toml
[dependencies]
bevy="0.14"
blenvy = { version = "0.1.0"}
and set things up in your code:
use bevy::prelude::*;
use blenvy::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(BlenvyPlugin)
.run();
}
- the ONLY setting is aabbs // defaults to true
- less headaches when using the tools! If you still want to manually specify components using Blender's custom properties you need to
- this is a very important change ! to avoid possible path clashes , the
BlueprintInfo
component contains the actual path (with your assets folder) to the Blueprint, and a name (for convenience)
changed the naming for more clarity & specificity
- no more need to preload gltf files, you can spawn a level & all its blueprint like this:
commands.spawn((
BlueprintInfo::from_path("levels/World.gltf"),
HideUntilReady, // Only if you want to keep the level hidden until it is finished spawning
SpawnBlueprint, // See note above
GameWorldTag,
InAppRunning,
));
Blenvy will take care of loading all needed blueprints & other assets for you
-
you can now use the
BlueprintEvent
to get notified of crucial blueprint instance eventsAssetsLoaded
/// event fired when a blueprint instance has finished loading all of its assets & before it attempts spawning AssetsLoaded { entity: Entity, blueprint_name: String, blueprint_path: String, // TODO: add assets list ? }
InstanceReady
/// event fired when a blueprint instance has completely finished spawning, ie /// - all its assests have been loaded /// - all of its child blueprint instances are ready /// - all the post processing is finished (aabb calculation, material replacements etc) InstanceReady { entity: Entity, blueprint_name: String, blueprint_path: String, },
you can now query for this component
- other than with events, you can also query for the
BlueprintSpawning
component to be sure an entity you are manipulating is finished with its blueprint instance spawning process
Keep your currently spawning blueprint instances hidden until they are ready with the HideUntilReady component
If you want your blueprint instance to be hidden until it is ready, just add this component to the entity. This can be particularly usefull in at least two use cases:
- when spawning levels
- when spawning bluprint instances that contain lights at runtime: in previous versions I have noticed some very unpleasant "flashing" effect when spawning blueprints with lights, this component avoids that issue
if you have configured your Bevy project to use hot reload you will automatically get hot reloading of levels & blueprints
- sceneAnimations
- animationTriggers
Additionally
- you do not really need to worry about SystemSets anymore