use bevy::prelude::*;
use bevy_fontmesh::{FontMeshPlugin, TextMesh, TextMeshBundle, TextMeshStyle};
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(FontMeshPlugin::<StandardMaterial>::default())
.add_systems(Startup, setup)
.run();
}
fn setup(
mut commands: Commands,
asset_server: Res<AssetServer>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
commands.spawn(Camera3d::default()).insert(
Transform::from_xyz(-0.5, -1.0, 5.0).looking_at(Vec3::new(-0.24, -0.5, -0.2), Vec3::Y),
);
commands
.spawn(PointLight {
intensity: 5000.0,
shadows_enabled: true,
..default()
})
.insert(Transform::from_xyz(4.0, 8.0, 4.0));
commands
.spawn(PointLight {
intensity: 2000.0,
color: Color::srgb(0.5, 0.5, 1.0),
..default()
})
.insert(Transform::from_xyz(-4.0, 2.0, 4.0));
commands.insert_resource(AmbientLight {
color: Color::WHITE,
brightness: 1000.0, affects_lightmapped_meshes: true,
});
commands.spawn(TextMeshBundle {
text_mesh: TextMesh {
text: "FontMesh".to_string(),
font: asset_server.load("fonts/FiraMono-Medium.ttf"),
style: TextMeshStyle {
depth: 1.0,
subdivision: 20,
..default()
},
},
material: MeshMaterial3d(materials.add(StandardMaterial {
base_color: Color::srgb(0.2, 0.3, 0.8), metallic: 0.8, perceptual_roughness: 0.3, reflectance: 0.8,
..default()
})),
transform: Transform::from_xyz(-2.5, 0.0, 0.0),
..default()
});
}