|
@@ -1129,6 +1129,7 @@ void ResourceImporterScene::get_import_options(List<ImportOption> *r_options, in
|
|
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "meshes/ensure_tangents"), true));
|
|
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "meshes/ensure_tangents"), true));
|
|
r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "meshes/storage", PROPERTY_HINT_ENUM, "Built-In,Files (.mesh),Files (.tres)"), meshes_out ? 1 : 0));
|
|
r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "meshes/storage", PROPERTY_HINT_ENUM, "Built-In,Files (.mesh),Files (.tres)"), meshes_out ? 1 : 0));
|
|
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "meshes/generate_lods"), true));
|
|
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "meshes/generate_lods"), true));
|
|
|
|
+ r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "meshes/create_shadow_meshes"), true));
|
|
r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "meshes/light_baking", PROPERTY_HINT_ENUM, "Disabled,Enable,Gen Lightmaps", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), 0));
|
|
r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "meshes/light_baking", PROPERTY_HINT_ENUM, "Disabled,Enable,Gen Lightmaps", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), 0));
|
|
r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "meshes/lightmap_texel_size", PROPERTY_HINT_RANGE, "0.001,100,0.001"), 0.1));
|
|
r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "meshes/lightmap_texel_size", PROPERTY_HINT_RANGE, "0.001,100,0.001"), 0.1));
|
|
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "skins/use_named_skins"), true));
|
|
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "skins/use_named_skins"), true));
|
|
@@ -1221,7 +1222,7 @@ Ref<Animation> ResourceImporterScene::import_animation_from_other_importer(Edito
|
|
return importer->import_animation(p_path, p_flags, p_bake_fps);
|
|
return importer->import_animation(p_path, p_flags, p_bake_fps);
|
|
}
|
|
}
|
|
|
|
|
|
-void ResourceImporterScene::_generate_meshes(Node *p_node, bool p_generate_lods) {
|
|
|
|
|
|
+void ResourceImporterScene::_generate_meshes(Node *p_node, bool p_generate_lods, bool p_create_shadow_meshes) {
|
|
EditorSceneImporterMeshNode3D *src_mesh_node = Object::cast_to<EditorSceneImporterMeshNode3D>(p_node);
|
|
EditorSceneImporterMeshNode3D *src_mesh_node = Object::cast_to<EditorSceneImporterMeshNode3D>(p_node);
|
|
if (src_mesh_node) {
|
|
if (src_mesh_node) {
|
|
//is mesh
|
|
//is mesh
|
|
@@ -1237,8 +1238,12 @@ void ResourceImporterScene::_generate_meshes(Node *p_node, bool p_generate_lods)
|
|
if (p_generate_lods) {
|
|
if (p_generate_lods) {
|
|
src_mesh_node->get_mesh()->generate_lods();
|
|
src_mesh_node->get_mesh()->generate_lods();
|
|
}
|
|
}
|
|
|
|
+ if (p_create_shadow_meshes) {
|
|
|
|
+ src_mesh_node->get_mesh()->create_shadow_mesh();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
mesh = src_mesh_node->get_mesh()->get_mesh();
|
|
mesh = src_mesh_node->get_mesh()->get_mesh();
|
|
|
|
+
|
|
if (mesh.is_valid()) {
|
|
if (mesh.is_valid()) {
|
|
mesh_node->set_mesh(mesh);
|
|
mesh_node->set_mesh(mesh);
|
|
for (int i = 0; i < mesh->get_surface_count(); i++) {
|
|
for (int i = 0; i < mesh->get_surface_count(); i++) {
|
|
@@ -1252,7 +1257,7 @@ void ResourceImporterScene::_generate_meshes(Node *p_node, bool p_generate_lods)
|
|
}
|
|
}
|
|
|
|
|
|
for (int i = 0; i < p_node->get_child_count(); i++) {
|
|
for (int i = 0; i < p_node->get_child_count(); i++) {
|
|
- _generate_meshes(p_node->get_child(i), p_generate_lods);
|
|
|
|
|
|
+ _generate_meshes(p_node->get_child(i), p_generate_lods, p_create_shadow_meshes);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Error ResourceImporterScene::import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) {
|
|
Error ResourceImporterScene::import(const String &p_source_file, const String &p_save_path, const Map<StringName, Variant> &p_options, List<String> *r_platform_variants, List<String> *r_gen_files, Variant *r_metadata) {
|
|
@@ -1348,8 +1353,9 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
|
|
}
|
|
}
|
|
|
|
|
|
bool gen_lods = bool(p_options["meshes/generate_lods"]);
|
|
bool gen_lods = bool(p_options["meshes/generate_lods"]);
|
|
|
|
+ bool create_shadow_meshes = bool(p_options["meshes/create_shadow_meshes"]);
|
|
|
|
|
|
- _generate_meshes(scene, gen_lods);
|
|
|
|
|
|
+ _generate_meshes(scene, gen_lods, create_shadow_meshes);
|
|
|
|
|
|
err = OK;
|
|
err = OK;
|
|
|
|
|