|
@@ -142,24 +142,23 @@ void SceneImportSettings::_fill_material(Tree *p_tree, const Ref<Material> &p_ma
|
|
|
String import_id;
|
|
|
bool has_import_id = false;
|
|
|
|
|
|
- bool created = false;
|
|
|
- if (!material_set.has(p_material)) {
|
|
|
- material_set.insert(p_material);
|
|
|
- created = true;
|
|
|
- }
|
|
|
-
|
|
|
if (p_material->has_meta("import_id")) {
|
|
|
import_id = p_material->get_meta("import_id");
|
|
|
has_import_id = true;
|
|
|
} else if (!p_material->get_name().is_empty()) {
|
|
|
import_id = p_material->get_name();
|
|
|
has_import_id = true;
|
|
|
+ } else if (unnamed_material_name_map.has(p_material)) {
|
|
|
+ import_id = unnamed_material_name_map[p_material];
|
|
|
} else {
|
|
|
- import_id = "@MATERIAL:" + itos(material_set.size() - 1);
|
|
|
+ import_id = "@MATERIAL:" + itos(material_map.size());
|
|
|
+ unnamed_material_name_map[p_material] = import_id;
|
|
|
}
|
|
|
|
|
|
+ bool created = false;
|
|
|
if (!material_map.has(import_id)) {
|
|
|
MaterialData md;
|
|
|
+ created = true;
|
|
|
md.has_import_id = has_import_id;
|
|
|
md.material = p_material;
|
|
|
|
|
@@ -169,6 +168,7 @@ void SceneImportSettings::_fill_material(Tree *p_tree, const Ref<Material> &p_ma
|
|
|
}
|
|
|
|
|
|
MaterialData &material_data = material_map[import_id];
|
|
|
+ ERR_FAIL_COND(p_material != material_data.material);
|
|
|
|
|
|
Ref<Texture2D> icon = get_theme_icon(SNAME("StandardMaterial3D"), SNAME("EditorIcons"));
|
|
|
|
|
@@ -564,10 +564,10 @@ void SceneImportSettings::open_settings(const String &p_path, bool p_for_animati
|
|
|
|
|
|
base_path = p_path;
|
|
|
|
|
|
- material_set.clear();
|
|
|
mesh_set.clear();
|
|
|
animation_map.clear();
|
|
|
material_map.clear();
|
|
|
+ unnamed_material_name_map.clear();
|
|
|
mesh_map.clear();
|
|
|
node_map.clear();
|
|
|
defaults.clear();
|