Fix #8819. Adds _import_node() that, when used in conjunction with _import_scene, recurses through the scene tree and exports all available nodes.

This commit is contained in:
Jon Ross 2017-05-18 15:23:51 -07:00
parent 06f77f941b
commit 4ed2722589
2 changed files with 17 additions and 14 deletions

View file

@ -35,24 +35,19 @@ void TileSetEditor::edit(const Ref<TileSet> &p_tileset) {
tileset = p_tileset; tileset = p_tileset;
} }
void TileSetEditor::_import_scene(Node *scene, Ref<TileSet> p_library, bool p_merge) {
if (!p_merge) void TileSetEditor::_import_node(Node *p_node, Ref<TileSet> p_library) {
p_library->clear();
for (int i = 0; i < scene->get_child_count(); i++) { for (int i = 0; i < p_node->get_child_count(); i++) {
Node *child = scene->get_child(i); Node *child = p_node->get_child(i);
if (!child->cast_to<Sprite>()) { if(!child->cast_to<Sprite>()) {
if (child->get_child_count() > 0) { if(child->get_child_count() > 0) {
child = child->get_child(0); _import_node(child, p_library);
if (!child->cast_to<Sprite>()) { }
continue;
} continue;
} else
continue;
} }
Sprite *mi = child->cast_to<Sprite>(); Sprite *mi = child->cast_to<Sprite>();
@ -136,6 +131,13 @@ void TileSetEditor::_import_scene(Node *scene, Ref<TileSet> p_library, bool p_me
} }
} }
void TileSetEditor::_import_scene(Node *p_scene, Ref<TileSet> p_library, bool p_merge) {
if (!p_merge)
p_library->clear();
_import_node(p_scene, p_library);
}
void TileSetEditor::_menu_confirm() { void TileSetEditor::_menu_confirm() {
switch (option) { switch (option) {

View file

@ -59,6 +59,7 @@ class TileSetEditor : public Control {
void _menu_confirm(); void _menu_confirm();
void _name_dialog_confirm(const String &name); void _name_dialog_confirm(const String &name);
static void _import_node(Node *p_node, Ref<TileSet> p_library);
static void _import_scene(Node *p_scene, Ref<TileSet> p_library, bool p_merge); static void _import_scene(Node *p_scene, Ref<TileSet> p_library, bool p_merge);
protected: protected: