@@ -1248,6 +1248,10 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
12481248 col->set_owner (p_node->get_owner ());
12491249 col->set_transform (get_collision_shapes_transform (node_settings));
12501250 col->set_position (p_applied_root_scale * col->get_position ());
1251+ const Ref<PhysicsMaterial> &pmo = node_settings[" physics/physics_material_override" ];
1252+ if (!pmo.is_null ()) {
1253+ col->set_physics_material_override (pmo);
1254+ }
12511255 base = col;
12521256 } break ;
12531257 case MESH_PHYSICS_RIGID_BODY_AND_MESH : {
@@ -1260,6 +1264,10 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
12601264 mi->set_transform (Transform3D ());
12611265 rigid_body->add_child (mi, true );
12621266 mi->set_owner (rigid_body->get_owner ());
1267+ const Ref<PhysicsMaterial> &pmo = node_settings[" physics/physics_material_override" ];
1268+ if (!pmo.is_null ()) {
1269+ rigid_body->set_physics_material_override (pmo);
1270+ }
12631271 base = rigid_body;
12641272 } break ;
12651273 case MESH_PHYSICS_STATIC_COLLIDER_ONLY : {
@@ -1271,6 +1279,10 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
12711279 p_node->set_owner (nullptr );
12721280 memdelete (p_node);
12731281 p_node = col;
1282+ const Ref<PhysicsMaterial> &pmo = node_settings[" physics/physics_material_override" ];
1283+ if (!pmo.is_null ()) {
1284+ col->set_physics_material_override (pmo);
1285+ }
12741286 base = col;
12751287 } break ;
12761288 case MESH_PHYSICS_AREA_ONLY : {
@@ -1287,6 +1299,9 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, HashMap<
12871299 } break ;
12881300 }
12891301
1302+ base->set_collision_layer (node_settings[" physics/layer" ]);
1303+ base->set_collision_mask (node_settings[" physics/mask" ]);
1304+
12901305 for (const Ref<Shape3D> &E : shapes) {
12911306 CollisionShape3D *cshape = memnew (CollisionShape3D);
12921307 cshape->set_shape (E);
@@ -1605,6 +1620,9 @@ void ResourceImporterScene::get_internal_import_options(InternalImportCategory p
16051620 r_options->push_back (ImportOption (PropertyInfo (Variant::INT , " generate/navmesh" , PROPERTY_HINT_ENUM , " Disabled,Mesh + NavMesh,NavMesh Only" ), 0 ));
16061621 r_options->push_back (ImportOption (PropertyInfo (Variant::INT , " physics/body_type" , PROPERTY_HINT_ENUM , " Static,Dynamic,Area" ), 0 ));
16071622 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 ));
1623+ r_options->push_back (ImportOption (PropertyInfo (Variant::OBJECT , " physics/physics_material_override" , PROPERTY_HINT_RESOURCE_TYPE , " PhysicsMaterial" ), Variant ()));
1624+ r_options->push_back (ImportOption (PropertyInfo (Variant::INT , " physics/layer" , PROPERTY_HINT_LAYERS_3D_PHYSICS ), 1 ));
1625+ r_options->push_back (ImportOption (PropertyInfo (Variant::INT , " physics/mask" , PROPERTY_HINT_LAYERS_3D_PHYSICS ), 1 ));
16081626
16091627 // Decomposition
16101628 Ref<MeshConvexDecompositionSettings> decomposition_default = Ref<MeshConvexDecompositionSettings>();
@@ -1703,9 +1721,7 @@ bool ResourceImporterScene::get_internal_option_visibility(InternalImportCategor
17031721 p_options.has (" generate/physics" ) &&
17041722 p_options[" generate/physics" ].operator bool ();
17051723
1706- if (
1707- p_option == " physics/body_type" ||
1708- p_option == " physics/shape_type" ) {
1724+ if (p_option.find (" physics/" ) >= 0 ) {
17091725 // Show if need to generate collisions.
17101726 return generate_physics;
17111727 }
0 commit comments