diff options
Diffstat (limited to 'editor/import/resource_importer_scene.cpp')
| -rw-r--r-- | editor/import/resource_importer_scene.cpp | 50 |
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); |
