Billboard text and texture support for bevy
- Follow Rust API Guidelines: https://rust-lang.github.io/api-guidelines/about.html
- Styled text with multiple fonts.
- Textures.
- Depth culling enabling/disabling (enabled by default).
- Y-axis locking (disabled by default).
- Uses texture_array for text, according to this, it doesn't work on webgl2.
Bevy Version | Crate Version |
---|---|
0.10 |
0.3.0 |
0.10 |
0.2.1 |
0.9 |
0.1.1 |
Setup:
use bevy_mod_billboard::prelude::*;
App::new()
.add_plugins(DefaultPlugins)
.add_plugin(BillboardPlugin);
Text:
commands.spawn(BillboardTextBundle {
transform: Transform::from_translation(Vec3::new(0., 2., 0.))
.with_scale(Vec3::splat(0.0085)),
text: Text::from_sections([
TextSection {
value: "IMPORTANT".to_string(),
style: TextStyle {
font_size: 60.0,
font: fira_sans_regular_handle.clone(),
color: Color::ORANGE,
}
},
TextSection {
value: " text".to_string(),
style: TextStyle {
font_size: 60.0,
font: fira_sans_regular_handle.clone(),
color: Color::WHITE,
}
}
]).with_alignment(TextAlignment::CENTER),
..default()
});
Texture:
fn spawn_billboard_texture(
mut billboard_textures: ResMut<Assets<BillboardTexture>>,
// rest
) {
commands.spawn(BillboardTextureBundle {
transform: Transform::from_translation(Vec3::new(0., 5., 0.)),
texture: billboard_textures.add(BillboardTexture::Single(image_handle.clone()),
mesh: meshes.add(Quad::new(Vec2::new(4.0, 4.0)).into()).into(),
..default()
});
}
Full examples at examples.
- Add prelude module and replace re-exports with prelude.
- Add support for disabling depth.
- Add support for locking Y axis.
- Fix memory leak caused by ImageBindGroup
Full changelog at CHANGELOG.md.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.