Move duplicated code into a function

(cherry picked from commit a1cfc1032c)
This commit is contained in:
Shatur95 2021-03-23 09:08:06 +02:00 committed by Rémi Verschelde
parent 78837f5c65
commit 41e7cefaa4
No known key found for this signature in database
GPG key ID: C3336907360768E1
2 changed files with 18 additions and 45 deletions

View file

@ -411,17 +411,7 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Mesh>
memdelete(p_node); memdelete(p_node);
p_node = col; p_node = col;
int idx = 0; _add_shapes(col, shapes);
for (List<Ref<Shape> >::Element *E = shapes.front(); E; E = E->next()) {
CollisionShape *cshape = memnew(CollisionShape);
cshape->set_shape(E->get());
col->add_child(cshape);
cshape->set_name("shape" + itos(idx));
cshape->set_owner(col->get_owner());
idx++;
}
} }
} }
@ -485,17 +475,7 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Mesh>
rigid_body->add_child(mi); rigid_body->add_child(mi);
mi->set_owner(rigid_body->get_owner()); mi->set_owner(rigid_body->get_owner());
int idx = 0; _add_shapes(rigid_body, shapes);
for (List<Ref<Shape> >::Element *E = shapes.front(); E; E = E->next()) {
CollisionShape *cshape = memnew(CollisionShape);
cshape->set_shape(E->get());
rigid_body->add_child(cshape);
cshape->set_name("shape" + itos(idx));
cshape->set_owner(p_node->get_owner());
idx++;
}
} }
} else if ((_teststr(name, "col") || (_teststr(name, "convcol"))) && Object::cast_to<MeshInstance>(p_node)) { } else if ((_teststr(name, "col") || (_teststr(name, "convcol"))) && Object::cast_to<MeshInstance>(p_node)) {
@ -535,18 +515,7 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Mesh>
mi->add_child(col); mi->add_child(col);
col->set_owner(mi->get_owner()); col->set_owner(mi->get_owner());
int idx = 0; _add_shapes(col, shapes);
for (List<Ref<Shape> >::Element *E = shapes.front(); E; E = E->next()) {
CollisionShape *cshape = memnew(CollisionShape);
cshape->set_shape(E->get());
col->add_child(cshape);
cshape->set_name("shape" + itos(idx));
cshape->set_owner(p_node->get_owner());
idx++;
}
} }
} }
@ -637,17 +606,7 @@ Node *ResourceImporterScene::_fix_node(Node *p_node, Node *p_root, Map<Ref<Mesh>
p_node->add_child(col); p_node->add_child(col);
col->set_owner(p_node->get_owner()); col->set_owner(p_node->get_owner());
int idx = 0; _add_shapes(col, shapes);
for (List<Ref<Shape> >::Element *E = shapes.front(); E; E = E->next()) {
CollisionShape *cshape = memnew(CollisionShape);
cshape->set_shape(E->get());
col->add_child(cshape);
cshape->set_name("shape" + itos(idx));
cshape->set_owner(p_node->get_owner());
idx++;
}
} }
} }
} }
@ -1200,6 +1159,19 @@ void ResourceImporterScene::_replace_owner(Node *p_node, Node *p_scene, Node *p_
} }
} }
void ResourceImporterScene::_add_shapes(Node *p_node, const List<Ref<Shape> > &p_shapes) {
int idx = 0;
for (const List<Ref<Shape> >::Element *E = p_shapes.front(); E; E = E->next()) {
CollisionShape *cshape = memnew(CollisionShape);
cshape->set_shape(E->get());
p_node->add_child(cshape);
cshape->set_name("shape" + itos(idx));
cshape->set_owner(p_node->get_owner());
idx++;
}
}
Node *ResourceImporterScene::import_scene_from_other_importer(EditorSceneImporter *p_exception, const String &p_path, uint32_t p_flags, int p_bake_fps) { Node *ResourceImporterScene::import_scene_from_other_importer(EditorSceneImporter *p_exception, const String &p_path, uint32_t p_flags, int p_bake_fps) {
Ref<EditorSceneImporter> importer; Ref<EditorSceneImporter> importer;

View file

@ -121,6 +121,7 @@ class ResourceImporterScene : public ResourceImporter {
}; };
void _replace_owner(Node *p_node, Node *p_scene, Node *p_new_owner); void _replace_owner(Node *p_node, Node *p_scene, Node *p_new_owner);
void _add_shapes(Node *p_node, const List<Ref<Shape> > &p_shapes);
public: public:
static ResourceImporterScene *get_singleton() { return singleton; } static ResourceImporterScene *get_singleton() { return singleton; }