bevy_gltf/loader/gltf_ext/
mesh.rs1use bevy_mesh::PrimitiveTopology;
2
3use gltf::{
4 mesh::{Mesh, Mode},
5 Material,
6};
7
8use crate::GltfError;
9
10pub(crate) fn primitive_name(mesh: &Mesh<'_>, material: &Material) -> String {
11 let mesh_name = mesh.name().unwrap_or("Mesh");
12
13 if let Some(material_name) = material.name() {
14 format!("{mesh_name}.{material_name}")
15 } else {
16 mesh_name.to_string()
17 }
18}
19
20#[cfg_attr(
22 not(target_arch = "wasm32"),
23 expect(
24 clippy::result_large_err,
25 reason = "`GltfError` is only barely past the threshold for large errors."
26 )
27)]
28pub(crate) fn primitive_topology(mode: Mode) -> Result<PrimitiveTopology, GltfError> {
29 match mode {
30 Mode::Points => Ok(PrimitiveTopology::PointList),
31 Mode::Lines => Ok(PrimitiveTopology::LineList),
32 Mode::LineStrip => Ok(PrimitiveTopology::LineStrip),
33 Mode::Triangles => Ok(PrimitiveTopology::TriangleList),
34 Mode::TriangleStrip => Ok(PrimitiveTopology::TriangleStrip),
35 mode => Err(GltfError::UnsupportedPrimitive { mode }),
36 }
37}