示例#1
0
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);



}
示例#2
0
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);
	}
}
示例#3
0
bool ProjectExportDialog::_fill_tree(EditorFileSystemDirectory *p_dir, TreeItem *p_item, Ref<EditorExportPreset> &current, 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;
}
示例#4
0
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);
}