Merge pull request from rsjtdrjgfuzkfg/obj-import

obj: Avoid empty names and meshes
This commit is contained in:
Rémi Verschelde 2023-01-16 22:10:30 +01:00 committed by GitHub
commit 14a6a5b79f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -218,7 +218,8 @@ static Error _parse_obj(const String &p_path, List<Ref<Mesh>> &r_meshes, bool p_
Vector<Vector3> normals;
Vector<Vector2> uvs;
Vector<Color> colors;
String name;
const String default_name = "Mesh";
String name = default_name;
HashMap<String, HashMap<String, Ref<StandardMaterial3D>>> material_map;
@ -395,9 +396,12 @@ static Error _parse_obj(const String &p_path, List<Ref<Mesh>> &r_meshes, bool p_
if (l.begins_with("o ") || f->eof_reached()) {
if (!p_single_mesh) {
mesh->set_name(name);
r_meshes.push_back(mesh);
mesh.instantiate();
if (mesh->get_surface_count() > 0) {
mesh->set_name(name);
r_meshes.push_back(mesh);
mesh.instantiate();
}
name = default_name;
current_group = "";
current_material = "";
}
@ -460,6 +464,7 @@ Node *EditorOBJImporter::import_scene(const String &p_path, uint32_t p_flags, co
for (const Ref<Mesh> &m : meshes) {
Ref<ImporterMesh> mesh;
mesh.instantiate();
mesh->set_name(m->get_name());
for (int i = 0; i < m->get_surface_count(); i++) {
mesh->add_surface(m->surface_get_primitive_type(i), m->surface_get_arrays(i), Array(), Dictionary(), m->surface_get_material(i));
}