summaryrefslogtreecommitdiffstats
path: root/editor/import/resource_importer_scene.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/import/resource_importer_scene.cpp')
-rw-r--r--editor/import/resource_importer_scene.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/editor/import/resource_importer_scene.cpp b/editor/import/resource_importer_scene.cpp
index 6996280477..452a612753 100644
--- a/editor/import/resource_importer_scene.cpp
+++ b/editor/import/resource_importer_scene.cpp
@@ -1374,6 +1374,40 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
}
}
+ if (Object::cast_to<ImporterMeshInstance3D>(p_node)) {
+ ImporterMeshInstance3D *mi = Object::cast_to<ImporterMeshInstance3D>(p_node);
+
+ if (node_settings.has("mesh_instance/layers")) {
+ mi->set_layer_mask(node_settings["mesh_instance/layers"]);
+ }
+
+ if (node_settings.has("mesh_instance/visibility_range_begin")) {
+ mi->set_visibility_range_begin(node_settings["mesh_instance/visibility_range_begin"]);
+ }
+
+ if (node_settings.has("mesh_instance/visibility_range_begin_margin")) {
+ mi->set_visibility_range_begin_margin(node_settings["mesh_instance/visibility_range_begin_margin"]);
+ }
+
+ if (node_settings.has("mesh_instance/visibility_range_end")) {
+ mi->set_visibility_range_end(node_settings["mesh_instance/visibility_range_end"]);
+ }
+
+ if (node_settings.has("mesh_instance/visibility_range_end_margin")) {
+ mi->set_visibility_range_end_margin(node_settings["mesh_instance/visibility_range_end_margin"]);
+ }
+
+ if (node_settings.has("mesh_instance/visibility_range_fade_mode")) {
+ const GeometryInstance3D::VisibilityRangeFadeMode range_fade_mode = (GeometryInstance3D::VisibilityRangeFadeMode)node_settings["mesh_instance/visibility_range_fade_mode"].operator int();
+ mi->set_visibility_range_fade_mode(range_fade_mode);
+ }
+
+ if (node_settings.has("mesh_instance/cast_shadow")) {
+ const GeometryInstance3D::ShadowCastingSetting cast_shadows = (GeometryInstance3D::ShadowCastingSetting)node_settings["mesh_instance/cast_shadow"].operator int();
+ mi->set_cast_shadows_setting(cast_shadows);
+ }
+ }
+
if (Object::cast_to<AnimationPlayer>(p_node)) {
AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
@@ -1625,6 +1659,14 @@ void ResourceImporterScene::get_internal_import_options(InternalImportCategory p
r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "physics/layer", PROPERTY_HINT_LAYERS_3D_PHYSICS), 1));
r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "physics/mask", PROPERTY_HINT_LAYERS_3D_PHYSICS), 1));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "mesh_instance/layers", PROPERTY_HINT_LAYERS_3D_RENDER), 1));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "mesh_instance/visibility_range_begin", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,or_greater,suffix:m"), 0.0f));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "mesh_instance/visibility_range_begin_margin", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,or_greater,suffix:m"), 0.0f));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "mesh_instance/visibility_range_end", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,or_greater,suffix:m"), 0.0f));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "mesh_instance/visibility_range_end_margin", PROPERTY_HINT_RANGE, "0.0,4096.0,0.01,or_greater,suffix:m"), 0.0f));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "mesh_instance/visibility_range_fade_mode", PROPERTY_HINT_ENUM, "Disabled,Self,Dependencies"), GeometryInstance3D::VISIBILITY_RANGE_FADE_DISABLED));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "mesh_instance/cast_shadow", PROPERTY_HINT_ENUM, "Off,On,Double-Sided,Shadows Only"), GeometryInstance3D::SHADOW_CASTING_SETTING_ON));
+
// Decomposition
Ref<MeshConvexDecompositionSettings> decomposition_default = Ref<MeshConvexDecompositionSettings>();
decomposition_default.instantiate();
@@ -2118,6 +2160,14 @@ void ResourceImporterScene::_generate_meshes(Node *p_node, const Dictionary &p_m
} break;
}
+ mesh_node->set_layer_mask(src_mesh_node->get_layer_mask());
+ mesh_node->set_cast_shadows_setting(src_mesh_node->get_cast_shadows_setting());
+ mesh_node->set_visibility_range_begin(src_mesh_node->get_visibility_range_begin());
+ mesh_node->set_visibility_range_begin_margin(src_mesh_node->get_visibility_range_begin_margin());
+ mesh_node->set_visibility_range_end(src_mesh_node->get_visibility_range_end());
+ mesh_node->set_visibility_range_end_margin(src_mesh_node->get_visibility_range_end_margin());
+ mesh_node->set_visibility_range_fade_mode(src_mesh_node->get_visibility_range_fade_mode());
+
p_node->replace_by(mesh_node);
p_node->set_owner(nullptr);
memdelete(p_node);