Path: blob/master/editor/scene/2d/tiles/atlas_merging_dialog.h
9906 views
/**************************************************************************/1/* atlas_merging_dialog.h */2/**************************************************************************/3/* This file is part of: */4/* GODOT ENGINE */5/* https://godotengine.org */6/**************************************************************************/7/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */8/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */9/* */10/* Permission is hereby granted, free of charge, to any person obtaining */11/* a copy of this software and associated documentation files (the */12/* "Software"), to deal in the Software without restriction, including */13/* without limitation the rights to use, copy, modify, merge, publish, */14/* distribute, sublicense, and/or sell copies of the Software, and to */15/* permit persons to whom the Software is furnished to do so, subject to */16/* the following conditions: */17/* */18/* The above copyright notice and this permission notice shall be */19/* included in all copies or substantial portions of the Software. */20/* */21/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */22/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */23/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */24/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */25/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */26/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */27/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */28/**************************************************************************/2930#pragma once3132#include "editor/inspector/editor_properties.h"33#include "scene/gui/dialogs.h"34#include "scene/gui/item_list.h"35#include "scene/gui/texture_rect.h"36#include "scene/resources/2d/tile_set.h"3738class EditorFileDialog;39class EditorPropertyVector2i;4041class AtlasMergingDialog : public ConfirmationDialog {42GDCLASS(AtlasMergingDialog, ConfirmationDialog);4344private:45int committed_actions_count = 0;46bool delete_original_atlases = true;47Ref<TileSetAtlasSource> merged;48LocalVector<HashMap<Vector2i, Vector2i>> merged_mapping;49Ref<TileSet> tile_set;5051// Settings.52int next_line_after_column = 30;5354// GUI.55ItemList *atlas_merging_atlases_list = nullptr;56EditorPropertyVector2i *texture_region_size_editor_property = nullptr;57EditorPropertyInteger *columns_editor_property = nullptr;58TextureRect *preview = nullptr;59Label *select_2_atlases_label = nullptr;60EditorFileDialog *editor_file_dialog = nullptr;61Button *merge_button = nullptr;6263void _property_changed(const StringName &p_property, const Variant &p_value, const String &p_field, bool p_changing);6465void _generate_merged(const Vector<Ref<TileSetAtlasSource>> &p_atlas_sources, int p_max_columns);66void _update_texture();67void _merge_confirmed(const String &p_path);6869protected:70virtual void ok_pressed() override;71virtual void cancel_pressed() override;72virtual void custom_action(const String &) override;7374bool _set(const StringName &p_name, const Variant &p_value);75bool _get(const StringName &p_name, Variant &r_ret) const;7677void _notification(int p_what);7879public:80void update_tile_set(Ref<TileSet> p_tile_set);8182AtlasMergingDialog();83};848586