void EditorSubScene::_path_changed(const String& p_path) { tree->clear(); if (scene) { memdelete(scene); scene=NULL; } if (p_path=="") return; Ref<PackedScene> ps = ResourceLoader::load(p_path,"PackedScene"); if (ps.is_null()) return; scene = ps->instance(); if (!scene) return; _fill_tree(scene,NULL); }
void EditorSubScene::_fill_tree(Node *p_node, TreeItem *p_parent) { TreeItem *it = tree->create_item(p_parent); it->set_metadata(0, p_node); it->set_text(0, p_node->get_name()); it->set_editable(0, false); it->set_selectable(0, true); it->set_icon(0, EditorNode::get_singleton()->get_object_icon(p_node, "Node")); for (int i = 0; i < p_node->get_child_count(); i++) { Node *c = p_node->get_child(i); if (c->get_owner() != scene) continue; _fill_tree(c, it); } }
bool ProjectExportDialog::_fill_tree(EditorFileSystemDirectory *p_dir, TreeItem *p_item, Ref<EditorExportPreset> ¤t, bool p_only_scenes) { p_item->set_icon(0, get_icon("folder", "FileDialog")); p_item->set_text(0, p_dir->get_name() + "/"); bool used = false; for (int i = 0; i < p_dir->get_subdir_count(); i++) { TreeItem *subdir = include_files->create_item(p_item); if (_fill_tree(p_dir->get_subdir(i), subdir, current, p_only_scenes) == false) { memdelete(subdir); } else { used = true; } } for (int i = 0; i < p_dir->get_file_count(); i++) { String type = p_dir->get_file_type(i); if (p_only_scenes && type != "PackedScene") continue; TreeItem *file = include_files->create_item(p_item); file->set_cell_mode(0, TreeItem::CELL_MODE_CHECK); file->set_text(0, p_dir->get_file(i)); Ref<Texture> tex; if (has_icon(type, editor_icons)) { tex = get_icon(type, editor_icons); } else { tex = get_icon("Object", editor_icons); } String path = p_dir->get_file_path(i); file->set_icon(0, tex); file->set_editable(0, true); file->set_checked(0, current->has_export_file(path)); file->set_metadata(0, path); used = true; } return used; }
void ProjectExportDialog::_fill_resource_tree() { include_files->clear(); include_label->hide(); include_margin->hide(); Ref<EditorExportPreset> current = EditorExport::get_singleton()->get_export_preset(presets->get_current()); if (current.is_null()) return; EditorExportPreset::ExportFilter f = current->get_export_filter(); if (f == EditorExportPreset::EXPORT_ALL_RESOURCES) { return; } include_label->show(); include_margin->show(); TreeItem *root = include_files->create_item(); _fill_tree(EditorFileSystem::get_singleton()->get_filesystem(), root, current, f == EditorExportPreset::EXPORT_SELECTED_SCENES); }