@@ -1245,6 +1245,10 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
12451245 col->set_owner (p_node->get_owner ());
12461246 col->set_transform (get_collision_shapes_transform (node_settings));
12471247 col->set_position (p_applied_root_scale * col->get_position ());
1248+ const Ref<PhysicsMaterial> &pmo = node_settings[" physics/physics_material_override" ];
1249+ if (!pmo.is_null ()) {
1250+ col->set_physics_material_override (pmo);
1251+ }
12481252 base = col;
12491253 } break ;
12501254 case MESH_PHYSICS_RIGID_BODY_AND_MESH : {
@@ -1257,6 +1261,10 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
12571261 mi->set_transform (Transform3D ());
12581262 rigid_body->add_child (mi, true );
12591263 mi->set_owner (rigid_body->get_owner ());
1264+ const Ref<PhysicsMaterial> &pmo = node_settings[" physics/physics_material_override" ];
1265+ if (!pmo.is_null ()) {
1266+ rigid_body->set_physics_material_override (pmo);
1267+ }
12601268 base = rigid_body;
12611269 } break ;
12621270 case MESH_PHYSICS_STATIC_COLLIDER_ONLY : {
@@ -1268,6 +1276,10 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
12681276 p_node->set_owner (nullptr );
12691277 memdelete (p_node);
12701278 p_node = col;
1279+ const Ref<PhysicsMaterial> &pmo = node_settings[" physics/physics_material_override" ];
1280+ if (!pmo.is_null ()) {
1281+ col->set_physics_material_override (pmo);
1282+ }
12711283 base = col;
12721284 } break ;
12731285 case MESH_PHYSICS_AREA_ONLY : {
@@ -1284,6 +1296,9 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
12841296 } break ;
12851297 }
12861298
1299+ base->set_collision_layer (node_settings[" physics/layer" ]);
1300+ base->set_collision_mask (node_settings[" physics/mask" ]);
1301+
12871302 for (const Ref<Shape3D> &E : shapes) {
12881303 CollisionShape3D *cshape = memnew (CollisionShape3D);
12891304 cshape->set_shape (E);
@@ -1602,6 +1617,9 @@ void ResourceImporterScene::get_internal_import_options(InternalImportCategory p
16021617 r_options->push_back (ImportOption (PropertyInfo (Variant::INT , " generate/navmesh" , PROPERTY_HINT_ENUM , " Disabled,Mesh + NavMesh,NavMesh Only" ), 0 ));
16031618 r_options->push_back (ImportOption (PropertyInfo (Variant::INT , " physics/body_type" , PROPERTY_HINT_ENUM , " Static,Dynamic,Area" ), 0 ));
16041619 r_options->push_back (ImportOption (PropertyInfo (Variant::INT , " physics/shape_type" , PROPERTY_HINT_ENUM , " Decompose Convex,Simple Convex,Trimesh,Box,Sphere,Cylinder,Capsule" , PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED ), 0 ));
1620+ r_options->push_back (ImportOption (PropertyInfo (Variant::OBJECT , " physics/physics_material_override" , PROPERTY_HINT_RESOURCE_TYPE , " PhysicsMaterial" ), Variant ()));
1621+ r_options->push_back (ImportOption (PropertyInfo (Variant::INT , " physics/layer" , PROPERTY_HINT_LAYERS_3D_PHYSICS ), 1 ));
1622+ r_options->push_back (ImportOption (PropertyInfo (Variant::INT , " physics/mask" , PROPERTY_HINT_LAYERS_3D_PHYSICS ), 1 ));
16051623
16061624 // Decomposition
16071625 Ref<MeshConvexDecompositionSettings> decomposition_default = Ref<MeshConvexDecompositionSettings>();
@@ -1700,9 +1718,7 @@ bool ResourceImporterScene::get_internal_option_visibility(InternalImportCategor
17001718 p_options.has (" generate/physics" ) &&
17011719 p_options[" generate/physics" ].operator bool ();
17021720
1703- if (
1704- p_option == " physics/body_type" ||
1705- p_option == " physics/shape_type" ) {
1721+ if (p_option.find (" physics/" ) >= 0 ) {
17061722 // Show if need to generate collisions.
17071723 return generate_physics;
17081724 }
0 commit comments