mirror of
https://github.com/godotengine/godot.git
synced 2024-11-23 20:53:15 +00:00
Improve TileSetAtlasSourceEditor UI
* Updates the overall layout, moving mode buttons to the top. * Uses inspector category instead of a Label to show what's being edited. This also allows better scrolling behavior.
This commit is contained in:
parent
ae86d907e7
commit
d8f5dcbf56
@ -1207,8 +1207,6 @@ TileDataDefaultEditor::TileDataDefaultEditor() {
|
||||
label->set_theme_type_variation("HeaderSmall");
|
||||
add_child(label);
|
||||
|
||||
toolbar->add_child(memnew(VSeparator));
|
||||
|
||||
picker_button = memnew(Button);
|
||||
picker_button->set_flat(true);
|
||||
picker_button->set_toggle_mode(true);
|
||||
@ -2659,8 +2657,6 @@ TileDataTerrainsEditor::TileDataTerrainsEditor() {
|
||||
add_child(label);
|
||||
|
||||
// Toolbar
|
||||
toolbar->add_child(memnew(VSeparator));
|
||||
|
||||
picker_button = memnew(Button);
|
||||
picker_button->set_flat(true);
|
||||
picker_button->set_toggle_mode(true);
|
||||
|
@ -64,11 +64,15 @@ void TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::set_id(int p_id) {
|
||||
emit_signal(SNAME("changed"), "id");
|
||||
}
|
||||
|
||||
int TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::get_id() {
|
||||
int TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::get_id() const {
|
||||
return source_id;
|
||||
}
|
||||
|
||||
bool TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::_set(const StringName &p_name, const Variant &p_value) {
|
||||
if (p_name == "id") {
|
||||
set_id(p_value);
|
||||
return true;
|
||||
}
|
||||
String name = p_name;
|
||||
if (name == "name") {
|
||||
// Use the resource_name property to store the source's name.
|
||||
@ -86,6 +90,10 @@ bool TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::_get(const StringN
|
||||
if (!tile_set_atlas_source) {
|
||||
return false;
|
||||
}
|
||||
if (p_name == "id") {
|
||||
r_ret = get_id();
|
||||
return true;
|
||||
}
|
||||
String name = p_name;
|
||||
if (name == "name") {
|
||||
// Use the resource_name property to store the source's name.
|
||||
@ -97,6 +105,8 @@ bool TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::_get(const StringN
|
||||
}
|
||||
|
||||
void TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::_get_property_list(List<PropertyInfo> *p_list) const {
|
||||
p_list->push_back(PropertyInfo(Variant::NIL, TTR("Atlas"), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_CATEGORY));
|
||||
p_list->push_back(PropertyInfo(Variant::INT, "id", PROPERTY_HINT_RANGE, "0," + itos(INT_MAX) + ",1"));
|
||||
p_list->push_back(PropertyInfo(Variant::STRING, "name", PROPERTY_HINT_NONE, ""));
|
||||
p_list->push_back(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"));
|
||||
p_list->push_back(PropertyInfo(Variant::VECTOR2I, "margins", PROPERTY_HINT_NONE, "suffix:px"));
|
||||
@ -106,12 +116,6 @@ void TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::_get_property_list
|
||||
}
|
||||
|
||||
void TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::_bind_methods() {
|
||||
// -- Shape and layout --
|
||||
ClassDB::bind_method(D_METHOD("set_id", "id"), &TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::set_id);
|
||||
ClassDB::bind_method(D_METHOD("get_id"), &TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::get_id);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "id", PROPERTY_HINT_RANGE, "0," + itos(INT_MAX) + ",1"), "set_id", "get_id");
|
||||
|
||||
ADD_SIGNAL(MethodInfo("changed", PropertyInfo(Variant::STRING, "what")));
|
||||
}
|
||||
|
||||
@ -383,11 +387,15 @@ void TileSetAtlasSourceEditor::AtlasTileProxyObject::_get_property_list(List<Pro
|
||||
// ID and size related properties.
|
||||
if (tiles.size() == 1) {
|
||||
if (tiles.front()->get().alternative == 0) {
|
||||
p_list->push_back(PropertyInfo(Variant::VECTOR2I, "atlas_coords", PROPERTY_HINT_NONE, ""));
|
||||
p_list->push_back(PropertyInfo(Variant::VECTOR2I, "size_in_atlas", PROPERTY_HINT_NONE, ""));
|
||||
p_list->push_back(PropertyInfo(Variant::NIL, TTR("Base Tile"), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_CATEGORY));
|
||||
p_list->push_back(PropertyInfo(Variant::VECTOR2I, "atlas_coords"));
|
||||
p_list->push_back(PropertyInfo(Variant::VECTOR2I, "size_in_atlas"));
|
||||
} else {
|
||||
p_list->push_back(PropertyInfo(Variant::INT, "alternative_id", PROPERTY_HINT_NONE, ""));
|
||||
p_list->push_back(PropertyInfo(Variant::NIL, TTR("Alternative Tile"), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_CATEGORY));
|
||||
p_list->push_back(PropertyInfo(Variant::INT, "alternative_id"));
|
||||
}
|
||||
} else {
|
||||
p_list->push_back(PropertyInfo(Variant::NIL, TTR("Tiles"), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_CATEGORY));
|
||||
}
|
||||
|
||||
// Animation.
|
||||
@ -443,6 +451,11 @@ void TileSetAtlasSourceEditor::AtlasTileProxyObject::_get_property_list(List<Pro
|
||||
|
||||
HashMap<String, int> counts; // Counts the number of time a property appears (useful for groups that may appear more than once)
|
||||
for (List<PropertyInfo>::Element *E_property = list.front(); E_property; E_property = E_property->next()) {
|
||||
// Don't show category for TileData.
|
||||
if (E_property->get().usage & PROPERTY_USAGE_CATEGORY) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const String &property_string = E_property->get().name;
|
||||
if (!tile_data->is_allowing_transform() && (property_string == "flip_h" || property_string == "flip_v" || property_string == "transpose")) {
|
||||
continue;
|
||||
@ -566,7 +579,6 @@ void TileSetAtlasSourceEditor::_update_fix_selected_and_hovered_tiles() {
|
||||
void TileSetAtlasSourceEditor::_update_atlas_source_inspector() {
|
||||
// Update visibility.
|
||||
bool inspector_visible = tools_button_group->get_pressed_button() == tool_setup_atlas_source_button;
|
||||
atlas_source_inspector_label->set_visible(inspector_visible);
|
||||
atlas_source_inspector->set_visible(inspector_visible);
|
||||
}
|
||||
|
||||
@ -576,11 +588,9 @@ void TileSetAtlasSourceEditor::_update_tile_inspector() {
|
||||
if (!selection.is_empty()) {
|
||||
tile_proxy_object->edit(tile_set_atlas_source, selection);
|
||||
}
|
||||
tile_inspector_label->show();
|
||||
tile_inspector->set_visible(!selection.is_empty());
|
||||
tile_inspector_no_tile_selected_label->set_visible(selection.is_empty());
|
||||
} else {
|
||||
tile_inspector_label->hide();
|
||||
tile_inspector->hide();
|
||||
tile_inspector_no_tile_selected_label->hide();
|
||||
}
|
||||
@ -798,6 +808,8 @@ void TileSetAtlasSourceEditor::_update_tile_data_editors() {
|
||||
tile_data_editor_dropdown_button->set_text(TTR("Select a property editor"));
|
||||
}
|
||||
tile_data_editors_label->set_visible(is_visible);
|
||||
tile_data_editors_tree->set_visible(is_visible);
|
||||
tile_data_painting_editor_container->set_visible(is_visible);
|
||||
}
|
||||
|
||||
void TileSetAtlasSourceEditor::_update_current_tile_data_editor() {
|
||||
@ -954,21 +966,18 @@ void TileSetAtlasSourceEditor::_update_toolbar() {
|
||||
if (current_tile_data_editor_toolbar) {
|
||||
current_tile_data_editor_toolbar->hide();
|
||||
}
|
||||
tool_settings_vsep->show();
|
||||
tools_settings_erase_button->show();
|
||||
tool_advanced_menu_buttom->show();
|
||||
} else if (tools_button_group->get_pressed_button() == tool_select_button) {
|
||||
if (current_tile_data_editor_toolbar) {
|
||||
current_tile_data_editor_toolbar->hide();
|
||||
}
|
||||
tool_settings_vsep->hide();
|
||||
tools_settings_erase_button->hide();
|
||||
tool_advanced_menu_buttom->hide();
|
||||
} else if (tools_button_group->get_pressed_button() == tool_paint_button) {
|
||||
if (current_tile_data_editor_toolbar) {
|
||||
current_tile_data_editor_toolbar->show();
|
||||
}
|
||||
tool_settings_vsep->hide();
|
||||
tools_settings_erase_button->hide();
|
||||
tool_advanced_menu_buttom->hide();
|
||||
}
|
||||
@ -2355,38 +2364,65 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() {
|
||||
set_process_unhandled_key_input(true);
|
||||
set_process_internal(true);
|
||||
|
||||
// -- Right side --
|
||||
HSplitContainer *split_container_right_side = memnew(HSplitContainer);
|
||||
split_container_right_side->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
add_child(split_container_right_side);
|
||||
|
||||
// Middle panel.
|
||||
ScrollContainer *middle_panel = memnew(ScrollContainer);
|
||||
middle_panel->set_horizontal_scroll_mode(ScrollContainer::SCROLL_MODE_DISABLED);
|
||||
middle_panel->set_custom_minimum_size(Size2(200, 0) * EDSCALE);
|
||||
split_container_right_side->add_child(middle_panel);
|
||||
|
||||
VBoxContainer *middle_vbox_container = memnew(VBoxContainer);
|
||||
middle_vbox_container->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
middle_panel->add_child(middle_vbox_container);
|
||||
middle_vbox_container->set_custom_minimum_size(Size2(200, 0) * EDSCALE);
|
||||
add_child(middle_vbox_container);
|
||||
|
||||
// -- Toolbox --
|
||||
tools_button_group.instantiate();
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_fix_selected_and_hovered_tiles).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_tile_id_label).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_atlas_source_inspector).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_tile_inspector).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_tile_data_editors).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_current_tile_data_editor).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_atlas_view).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_toolbar).unbind(1));
|
||||
|
||||
HBoxContainer *toolbox = memnew(HBoxContainer);
|
||||
middle_vbox_container->add_child(toolbox);
|
||||
|
||||
tool_setup_atlas_source_button = memnew(Button);
|
||||
tool_setup_atlas_source_button->set_text(TTR("Setup"));
|
||||
tool_setup_atlas_source_button->set_flat(true);
|
||||
tool_setup_atlas_source_button->set_toggle_mode(true);
|
||||
tool_setup_atlas_source_button->set_pressed(true);
|
||||
tool_setup_atlas_source_button->set_button_group(tools_button_group);
|
||||
tool_setup_atlas_source_button->set_tooltip_text(TTR("Atlas setup. Add/Remove tiles tool (use the shift key to create big tiles, control for rectangle editing)."));
|
||||
toolbox->add_child(tool_setup_atlas_source_button);
|
||||
|
||||
tool_select_button = memnew(Button);
|
||||
tool_select_button->set_text(TTR("Select"));
|
||||
tool_select_button->set_flat(true);
|
||||
tool_select_button->set_toggle_mode(true);
|
||||
tool_select_button->set_pressed(false);
|
||||
tool_select_button->set_button_group(tools_button_group);
|
||||
tool_select_button->set_tooltip_text(TTR("Select tiles."));
|
||||
toolbox->add_child(tool_select_button);
|
||||
|
||||
tool_paint_button = memnew(Button);
|
||||
tool_paint_button->set_text(TTR("Paint"));
|
||||
tool_paint_button->set_flat(true);
|
||||
tool_paint_button->set_toggle_mode(true);
|
||||
tool_paint_button->set_button_group(tools_button_group);
|
||||
tool_paint_button->set_tooltip_text(TTR("Paint properties."));
|
||||
toolbox->add_child(tool_paint_button);
|
||||
|
||||
// Tile inspector.
|
||||
tile_inspector_label = memnew(Label);
|
||||
tile_inspector_label->set_text(TTR("Tile Properties:"));
|
||||
tile_inspector_label->set_theme_type_variation("HeaderSmall");
|
||||
middle_vbox_container->add_child(tile_inspector_label);
|
||||
|
||||
tile_proxy_object = memnew(AtlasTileProxyObject(this));
|
||||
tile_proxy_object->connect("changed", callable_mp(this, &TileSetAtlasSourceEditor::_tile_proxy_object_changed));
|
||||
|
||||
tile_inspector = memnew(EditorInspector);
|
||||
tile_inspector->set_vertical_scroll_mode(ScrollContainer::SCROLL_MODE_DISABLED);
|
||||
tile_inspector->set_v_size_flags(SIZE_EXPAND_FILL);
|
||||
tile_inspector->set_show_categories(true);
|
||||
tile_inspector->edit(tile_proxy_object);
|
||||
tile_inspector->set_use_folding(true);
|
||||
tile_inspector->connect("property_selected", callable_mp(this, &TileSetAtlasSourceEditor::_inspector_property_selected));
|
||||
middle_vbox_container->add_child(tile_inspector);
|
||||
|
||||
tile_inspector_no_tile_selected_label = memnew(Label);
|
||||
tile_inspector_no_tile_selected_label->set_v_size_flags(SIZE_EXPAND | SIZE_SHRINK_CENTER);
|
||||
tile_inspector_no_tile_selected_label->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
|
||||
tile_inspector_no_tile_selected_label->set_text(TTR("No tiles selected."));
|
||||
middle_vbox_container->add_child(tile_inspector_no_tile_selected_label);
|
||||
@ -2418,77 +2454,22 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() {
|
||||
middle_vbox_container->add_child(tile_data_painting_editor_container);
|
||||
|
||||
// Atlas source inspector.
|
||||
atlas_source_inspector_label = memnew(Label);
|
||||
atlas_source_inspector_label->set_text(TTR("Atlas Properties:"));
|
||||
atlas_source_inspector_label->set_theme_type_variation("HeaderSmall");
|
||||
middle_vbox_container->add_child(atlas_source_inspector_label);
|
||||
|
||||
atlas_source_proxy_object = memnew(TileSetAtlasSourceProxyObject());
|
||||
atlas_source_proxy_object->connect("changed", callable_mp(this, &TileSetAtlasSourceEditor::_atlas_source_proxy_object_changed));
|
||||
|
||||
atlas_source_inspector = memnew(EditorInspector);
|
||||
atlas_source_inspector->set_vertical_scroll_mode(ScrollContainer::SCROLL_MODE_DISABLED);
|
||||
atlas_source_inspector->set_v_size_flags(SIZE_EXPAND_FILL);
|
||||
atlas_source_inspector->set_show_categories(true);
|
||||
atlas_source_inspector->edit(atlas_source_proxy_object);
|
||||
middle_vbox_container->add_child(atlas_source_inspector);
|
||||
|
||||
// Right panel.
|
||||
VBoxContainer *right_panel = memnew(VBoxContainer);
|
||||
right_panel->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
right_panel->set_v_size_flags(SIZE_EXPAND_FILL);
|
||||
split_container_right_side->add_child(right_panel);
|
||||
|
||||
// -- Dialogs --
|
||||
confirm_auto_create_tiles = memnew(AcceptDialog);
|
||||
confirm_auto_create_tiles->set_title(TTR("Auto Create Tiles in Non-Transparent Texture Regions?"));
|
||||
confirm_auto_create_tiles->set_text(TTR("The atlas's texture was modified.\nWould you like to automatically create tiles in the atlas?"));
|
||||
confirm_auto_create_tiles->set_ok_button_text(TTR("Yes"));
|
||||
confirm_auto_create_tiles->add_cancel_button()->set_text(TTR("No"));
|
||||
confirm_auto_create_tiles->connect("confirmed", callable_mp(this, &TileSetAtlasSourceEditor::_auto_create_tiles));
|
||||
add_child(confirm_auto_create_tiles);
|
||||
|
||||
// -- Toolbox --
|
||||
tools_button_group.instantiate();
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_fix_selected_and_hovered_tiles).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_tile_id_label).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_atlas_source_inspector).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_tile_inspector).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_tile_data_editors).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_current_tile_data_editor).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_atlas_view).unbind(1));
|
||||
tools_button_group->connect("pressed", callable_mp(this, &TileSetAtlasSourceEditor::_update_toolbar).unbind(1));
|
||||
|
||||
toolbox = memnew(HBoxContainer);
|
||||
right_panel->add_child(toolbox);
|
||||
|
||||
tool_setup_atlas_source_button = memnew(Button);
|
||||
tool_setup_atlas_source_button->set_flat(true);
|
||||
tool_setup_atlas_source_button->set_toggle_mode(true);
|
||||
tool_setup_atlas_source_button->set_pressed(true);
|
||||
tool_setup_atlas_source_button->set_button_group(tools_button_group);
|
||||
tool_setup_atlas_source_button->set_tooltip_text(TTR("Atlas setup. Add/Remove tiles tool (use the shift key to create big tiles, control for rectangle editing)."));
|
||||
toolbox->add_child(tool_setup_atlas_source_button);
|
||||
|
||||
tool_select_button = memnew(Button);
|
||||
tool_select_button->set_flat(true);
|
||||
tool_select_button->set_toggle_mode(true);
|
||||
tool_select_button->set_pressed(false);
|
||||
tool_select_button->set_button_group(tools_button_group);
|
||||
tool_select_button->set_tooltip_text(TTR("Select tiles."));
|
||||
toolbox->add_child(tool_select_button);
|
||||
|
||||
tool_paint_button = memnew(Button);
|
||||
tool_paint_button->set_flat(true);
|
||||
tool_paint_button->set_toggle_mode(true);
|
||||
tool_paint_button->set_button_group(tools_button_group);
|
||||
tool_paint_button->set_tooltip_text(TTR("Paint properties."));
|
||||
toolbox->add_child(tool_paint_button);
|
||||
// -- Right side --
|
||||
VBoxContainer *right_vbox_container = memnew(VBoxContainer);
|
||||
add_child(right_vbox_container);
|
||||
|
||||
// Tool settings.
|
||||
tool_settings = memnew(HBoxContainer);
|
||||
toolbox->add_child(tool_settings);
|
||||
|
||||
tool_settings_vsep = memnew(VSeparator);
|
||||
tool_settings->add_child(tool_settings_vsep);
|
||||
right_vbox_container->add_child(tool_settings);
|
||||
|
||||
tool_settings_tile_data_toolbar_container = memnew(HBoxContainer);
|
||||
tool_settings->add_child(tool_settings_tile_data_toolbar_container);
|
||||
@ -2505,24 +2486,31 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() {
|
||||
tool_advanced_menu_buttom->get_popup()->add_item(TTR("Create Tiles in Non-Transparent Texture Regions"), ADVANCED_AUTO_CREATE_TILES);
|
||||
tool_advanced_menu_buttom->get_popup()->add_item(TTR("Remove Tiles in Fully Transparent Texture Regions"), ADVANCED_AUTO_REMOVE_TILES);
|
||||
tool_advanced_menu_buttom->get_popup()->connect("id_pressed", callable_mp(this, &TileSetAtlasSourceEditor::_menu_option));
|
||||
toolbox->add_child(tool_advanced_menu_buttom);
|
||||
tool_settings->add_child(tool_advanced_menu_buttom);
|
||||
|
||||
_update_toolbar();
|
||||
|
||||
// Right side of toolbar.
|
||||
Control *middle_space = memnew(Control);
|
||||
middle_space->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
toolbox->add_child(middle_space);
|
||||
tool_settings->add_child(middle_space);
|
||||
|
||||
tool_tile_id_label = memnew(Label);
|
||||
tool_tile_id_label->set_mouse_filter(Control::MOUSE_FILTER_STOP);
|
||||
toolbox->add_child(tool_tile_id_label);
|
||||
tool_settings->add_child(tool_tile_id_label);
|
||||
_update_tile_id_label();
|
||||
|
||||
// Right panel.
|
||||
VBoxContainer *right_panel = memnew(VBoxContainer);
|
||||
right_panel->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
right_panel->set_v_size_flags(SIZE_EXPAND_FILL);
|
||||
right_vbox_container->add_child(right_panel);
|
||||
|
||||
// Tile atlas view.
|
||||
tile_atlas_view = memnew(TileAtlasView);
|
||||
tile_atlas_view->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
tile_atlas_view->set_v_size_flags(SIZE_EXPAND_FILL);
|
||||
tile_atlas_view->set_custom_minimum_size(Size2(200, 0) * EDSCALE);
|
||||
tile_atlas_view->connect("transform_changed", callable_mp(TilesEditorPlugin::get_singleton(), &TilesEditorPlugin::set_atlas_view_transform));
|
||||
tile_atlas_view->connect("transform_changed", callable_mp(this, &TileSetAtlasSourceEditor::_tile_atlas_view_transform_changed).unbind(2));
|
||||
right_panel->add_child(tile_atlas_view);
|
||||
@ -2565,17 +2553,17 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() {
|
||||
tile_atlas_view->add_control_over_alternative_tiles(alternative_tiles_control_unscaled, false);
|
||||
alternative_tiles_control_unscaled->set_mouse_filter(Control::MOUSE_FILTER_IGNORE);
|
||||
|
||||
tile_atlas_view_missing_source_label = memnew(Label);
|
||||
tile_atlas_view_missing_source_label->set_text(TTR("Add or select an atlas texture to the left panel."));
|
||||
tile_atlas_view_missing_source_label->set_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
|
||||
tile_atlas_view_missing_source_label->set_vertical_alignment(VERTICAL_ALIGNMENT_CENTER);
|
||||
tile_atlas_view_missing_source_label->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
tile_atlas_view_missing_source_label->set_v_size_flags(SIZE_EXPAND_FILL);
|
||||
tile_atlas_view_missing_source_label->hide();
|
||||
right_panel->add_child(tile_atlas_view_missing_source_label);
|
||||
|
||||
EditorNode::get_singleton()->get_editor_data().add_undo_redo_inspector_hook_callback(callable_mp(this, &TileSetAtlasSourceEditor::_undo_redo_inspector_callback));
|
||||
|
||||
// -- Dialogs --
|
||||
confirm_auto_create_tiles = memnew(AcceptDialog);
|
||||
confirm_auto_create_tiles->set_title(TTR("Auto Create Tiles in Non-Transparent Texture Regions?"));
|
||||
confirm_auto_create_tiles->set_text(TTR("The atlas's texture was modified.\nWould you like to automatically create tiles in the atlas?"));
|
||||
confirm_auto_create_tiles->set_ok_button_text(TTR("Yes"));
|
||||
confirm_auto_create_tiles->add_cancel_button()->set_text(TTR("No"));
|
||||
confirm_auto_create_tiles->connect("confirmed", callable_mp(this, &TileSetAtlasSourceEditor::_auto_create_tiles));
|
||||
add_child(confirm_auto_create_tiles);
|
||||
|
||||
// Inspector plugin.
|
||||
Ref<EditorInspectorPluginTileData> tile_data_inspector_plugin;
|
||||
tile_data_inspector_plugin.instantiate();
|
||||
|
@ -42,8 +42,8 @@ class TileSet;
|
||||
class Tree;
|
||||
class VSeparator;
|
||||
|
||||
class TileSetAtlasSourceEditor : public HBoxContainer {
|
||||
GDCLASS(TileSetAtlasSourceEditor, HBoxContainer);
|
||||
class TileSetAtlasSourceEditor : public HSplitContainer {
|
||||
GDCLASS(TileSetAtlasSourceEditor, HSplitContainer);
|
||||
|
||||
public:
|
||||
// A class to store which tiles are selected.
|
||||
@ -77,7 +77,7 @@ public:
|
||||
|
||||
public:
|
||||
void set_id(int p_id);
|
||||
int get_id();
|
||||
int get_id() const;
|
||||
|
||||
void edit(Ref<TileSet> p_tile_set, TileSetAtlasSource *p_tile_set_atlas_source, int p_source_id);
|
||||
TileSetAtlasSource *get_edited() { return tile_set_atlas_source; };
|
||||
@ -137,19 +137,15 @@ private:
|
||||
|
||||
// -- Inspector --
|
||||
AtlasTileProxyObject *tile_proxy_object = nullptr;
|
||||
Label *tile_inspector_label = nullptr;
|
||||
EditorInspector *tile_inspector = nullptr;
|
||||
Label *tile_inspector_no_tile_selected_label = nullptr;
|
||||
String selected_property;
|
||||
void _inspector_property_selected(String p_property);
|
||||
|
||||
TileSetAtlasSourceProxyObject *atlas_source_proxy_object = nullptr;
|
||||
Label *atlas_source_inspector_label = nullptr;
|
||||
EditorInspector *atlas_source_inspector = nullptr;
|
||||
|
||||
// -- Atlas view --
|
||||
HBoxContainer *toolbox = nullptr;
|
||||
Label *tile_atlas_view_missing_source_label = nullptr;
|
||||
TileAtlasView *tile_atlas_view = nullptr;
|
||||
|
||||
// Dragging
|
||||
@ -210,7 +206,6 @@ private:
|
||||
|
||||
// Tool settings.
|
||||
HBoxContainer *tool_settings = nullptr;
|
||||
VSeparator *tool_settings_vsep = nullptr;
|
||||
HBoxContainer *tool_settings_tile_data_toolbar_container = nullptr;
|
||||
Button *tools_settings_erase_button = nullptr;
|
||||
MenuButton *tool_advanced_menu_buttom = nullptr;
|
||||
|
Loading…
Reference in New Issue
Block a user