1 unstable release
0.1.1 | Jul 8, 2024 |
---|---|
0.1.0 |
|
#438 in Game dev
145KB
2.5K
SLoC
Bevy glTF Trait
This is a fork of bevy /crates/bevy_gltf
, that doesn't change any functionalities, but provides several possibilities to customize
the conversion between gltf and bevy interns on load
using the trait GltfTrait
.
Trait Features
- set the extensions
default: &["gltf", "glb"]
- Material:
- change the
Material
used - or just edit the
StandardMaterial
s
- change the
- Meshes:
- edit any
Mesh
- edit their
EntityWorldMut
(similar toEntityCommands
) - edit the
Transform
andEntityWorldMut
of their parent
- edit any
- Lights:
- edit their
SpotLight
,PointLight
orDirectionalLight
components - edit their
EntityWorldMut
- edit the
Transform
andEntityWorldMut
of their parent
- edit their
- edit the
App
Notes
- If you want to insert components through the trait and they are foreign to bevy_gltf:
- Make sure to use
on_app
to.register_type()
them
- Make sure to use
- the provided gltf structs make it possible to react to custom gltf properties
Example
The original way of adding the plugin changes to:
fn main(){
let mut app = App::new();
app.add_plugins((
MinimalPlugins,
GltfPlugin::<()>::default(),
// ...
));
app.run();
}
..and can be modified with the trait to either replace or extend (using different extensions) scene imports.
#[derive(Reflect,Default)]
struct WhiteGltf;
impl GltfTrait for WhiteGltf {
const EXTENSIONS: &'static [&'static str] = &["myglb"];
type Material = StandardMaterial;
fn convert_material (mut convert:GltfTraitMaterial) -> Self::Material {
convert.material.base_color = Color::WHITE;
convert.material.base_color_texture = None;
convert.material
}
}
fn main(){
let mut app = App::new();
app.add_plugins((
DefaultPlugins,
GltfPlugin::<WhiteGltf>::default()
));
app.run();
}
Bevy support table
bevy | bevy_gltf_trait |
---|---|
0.14 | 0.1 |
Dependencies
~33–70MB
~1M SLoC