|
@@ -64,11 +64,15 @@ void TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::set_id(int p_id) {
|
|
emit_signal(SNAME("changed"), "id");
|
|
emit_signal(SNAME("changed"), "id");
|
|
}
|
|
}
|
|
|
|
|
|
-int TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::get_id() {
|
|
|
|
|
|
+int TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::get_id() const {
|
|
return source_id;
|
|
return source_id;
|
|
}
|
|
}
|
|
|
|
|
|
bool TileSetAtlasSourceEditor::TileSetAtlasSourceProxyObject::_set(const StringName &p_name, const Variant &p_value) {
|
|
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;
|
|
String name = p_name;
|
|
if (name == "name") {
|
|
if (name == "name") {
|
|
// Use the resource_name property to store the source's 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) {
|
|
if (!tile_set_atlas_source) {
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
+ if (p_name == "id") {
|
|
|
|
+ r_ret = get_id();
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
String name = p_name;
|
|
String name = p_name;
|
|
if (name == "name") {
|
|
if (name == "name") {
|
|
// Use the resource_name property to store the source's 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 {
|
|
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::STRING, "name", PROPERTY_HINT_NONE, ""));
|
|
p_list->push_back(PropertyInfo(Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"));
|
|
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"));
|
|
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() {
|
|
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")));
|
|
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.
|
|
// ID and size related properties.
|
|
if (tiles.size() == 1) {
|
|
if (tiles.size() == 1) {
|
|
if (tiles.front()->get().alternative == 0) {
|
|
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 {
|
|
} 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.
|
|
// 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)
|
|
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()) {
|
|
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;
|
|
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")) {
|
|
if (!tile_data->is_allowing_transform() && (property_string == "flip_h" || property_string == "flip_v" || property_string == "transpose")) {
|
|
continue;
|
|
continue;
|
|
@@ -566,7 +579,6 @@ void TileSetAtlasSourceEditor::_update_fix_selected_and_hovered_tiles() {
|
|
void TileSetAtlasSourceEditor::_update_atlas_source_inspector() {
|
|
void TileSetAtlasSourceEditor::_update_atlas_source_inspector() {
|
|
// Update visibility.
|
|
// Update visibility.
|
|
bool inspector_visible = tools_button_group->get_pressed_button() == tool_setup_atlas_source_button;
|
|
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);
|
|
atlas_source_inspector->set_visible(inspector_visible);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -576,11 +588,9 @@ void TileSetAtlasSourceEditor::_update_tile_inspector() {
|
|
if (!selection.is_empty()) {
|
|
if (!selection.is_empty()) {
|
|
tile_proxy_object->edit(tile_set_atlas_source, selection);
|
|
tile_proxy_object->edit(tile_set_atlas_source, selection);
|
|
}
|
|
}
|
|
- tile_inspector_label->show();
|
|
|
|
tile_inspector->set_visible(!selection.is_empty());
|
|
tile_inspector->set_visible(!selection.is_empty());
|
|
tile_inspector_no_tile_selected_label->set_visible(selection.is_empty());
|
|
tile_inspector_no_tile_selected_label->set_visible(selection.is_empty());
|
|
} else {
|
|
} else {
|
|
- tile_inspector_label->hide();
|
|
|
|
tile_inspector->hide();
|
|
tile_inspector->hide();
|
|
tile_inspector_no_tile_selected_label->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_editor_dropdown_button->set_text(TTR("Select a property editor"));
|
|
}
|
|
}
|
|
tile_data_editors_label->set_visible(is_visible);
|
|
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() {
|
|
void TileSetAtlasSourceEditor::_update_current_tile_data_editor() {
|
|
@@ -954,21 +966,18 @@ void TileSetAtlasSourceEditor::_update_toolbar() {
|
|
if (current_tile_data_editor_toolbar) {
|
|
if (current_tile_data_editor_toolbar) {
|
|
current_tile_data_editor_toolbar->hide();
|
|
current_tile_data_editor_toolbar->hide();
|
|
}
|
|
}
|
|
- tool_settings_vsep->show();
|
|
|
|
tools_settings_erase_button->show();
|
|
tools_settings_erase_button->show();
|
|
tool_advanced_menu_buttom->show();
|
|
tool_advanced_menu_buttom->show();
|
|
} else if (tools_button_group->get_pressed_button() == tool_select_button) {
|
|
} else if (tools_button_group->get_pressed_button() == tool_select_button) {
|
|
if (current_tile_data_editor_toolbar) {
|
|
if (current_tile_data_editor_toolbar) {
|
|
current_tile_data_editor_toolbar->hide();
|
|
current_tile_data_editor_toolbar->hide();
|
|
}
|
|
}
|
|
- tool_settings_vsep->hide();
|
|
|
|
tools_settings_erase_button->hide();
|
|
tools_settings_erase_button->hide();
|
|
tool_advanced_menu_buttom->hide();
|
|
tool_advanced_menu_buttom->hide();
|
|
} else if (tools_button_group->get_pressed_button() == tool_paint_button) {
|
|
} else if (tools_button_group->get_pressed_button() == tool_paint_button) {
|
|
if (current_tile_data_editor_toolbar) {
|
|
if (current_tile_data_editor_toolbar) {
|
|
current_tile_data_editor_toolbar->show();
|
|
current_tile_data_editor_toolbar->show();
|
|
}
|
|
}
|
|
- tool_settings_vsep->hide();
|
|
|
|
tools_settings_erase_button->hide();
|
|
tools_settings_erase_button->hide();
|
|
tool_advanced_menu_buttom->hide();
|
|
tool_advanced_menu_buttom->hide();
|
|
}
|
|
}
|
|
@@ -2355,38 +2364,65 @@ TileSetAtlasSourceEditor::TileSetAtlasSourceEditor() {
|
|
set_process_unhandled_key_input(true);
|
|
set_process_unhandled_key_input(true);
|
|
set_process_internal(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.
|
|
// 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);
|
|
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);
|
|
|
|
|
|
- // 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);
|
|
|
|
|
|
+ // -- 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_proxy_object = memnew(AtlasTileProxyObject(this));
|
|
tile_proxy_object = memnew(AtlasTileProxyObject(this));
|
|
tile_proxy_object->connect("changed", callable_mp(this, &TileSetAtlasSourceEditor::_tile_proxy_object_changed));
|
|
tile_proxy_object->connect("changed", callable_mp(this, &TileSetAtlasSourceEditor::_tile_proxy_object_changed));
|
|
|
|
|
|
tile_inspector = memnew(EditorInspector);
|
|
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->edit(tile_proxy_object);
|
|
tile_inspector->set_use_folding(true);
|
|
tile_inspector->set_use_folding(true);
|
|
tile_inspector->connect("property_selected", callable_mp(this, &TileSetAtlasSourceEditor::_inspector_property_selected));
|
|
tile_inspector->connect("property_selected", callable_mp(this, &TileSetAtlasSourceEditor::_inspector_property_selected));
|
|
middle_vbox_container->add_child(tile_inspector);
|
|
middle_vbox_container->add_child(tile_inspector);
|
|
|
|
|
|
tile_inspector_no_tile_selected_label = memnew(Label);
|
|
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_horizontal_alignment(HORIZONTAL_ALIGNMENT_CENTER);
|
|
tile_inspector_no_tile_selected_label->set_text(TTR("No tiles selected."));
|
|
tile_inspector_no_tile_selected_label->set_text(TTR("No tiles selected."));
|
|
middle_vbox_container->add_child(tile_inspector_no_tile_selected_label);
|
|
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);
|
|
middle_vbox_container->add_child(tile_data_painting_editor_container);
|
|
|
|
|
|
// Atlas source inspector.
|
|
// 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 = memnew(TileSetAtlasSourceProxyObject());
|
|
atlas_source_proxy_object->connect("changed", callable_mp(this, &TileSetAtlasSourceEditor::_atlas_source_proxy_object_changed));
|
|
atlas_source_proxy_object->connect("changed", callable_mp(this, &TileSetAtlasSourceEditor::_atlas_source_proxy_object_changed));
|
|
|
|
|
|
atlas_source_inspector = memnew(EditorInspector);
|
|
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);
|
|
atlas_source_inspector->edit(atlas_source_proxy_object);
|
|
middle_vbox_container->add_child(atlas_source_inspector);
|
|
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.
|
|
tool_settings = memnew(HBoxContainer);
|
|
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_tile_data_toolbar_container = memnew(HBoxContainer);
|
|
tool_settings->add_child(tool_settings_tile_data_toolbar_container);
|
|
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("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()->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));
|
|
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();
|
|
_update_toolbar();
|
|
|
|
|
|
// Right side of toolbar.
|
|
// Right side of toolbar.
|
|
Control *middle_space = memnew(Control);
|
|
Control *middle_space = memnew(Control);
|
|
middle_space->set_h_size_flags(SIZE_EXPAND_FILL);
|
|
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 = memnew(Label);
|
|
tool_tile_id_label->set_mouse_filter(Control::MOUSE_FILTER_STOP);
|
|
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();
|
|
_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.
|
|
tile_atlas_view = memnew(TileAtlasView);
|
|
tile_atlas_view = memnew(TileAtlasView);
|
|
tile_atlas_view->set_h_size_flags(SIZE_EXPAND_FILL);
|
|
tile_atlas_view->set_h_size_flags(SIZE_EXPAND_FILL);
|
|
tile_atlas_view->set_v_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(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));
|
|
tile_atlas_view->connect("transform_changed", callable_mp(this, &TileSetAtlasSourceEditor::_tile_atlas_view_transform_changed).unbind(2));
|
|
right_panel->add_child(tile_atlas_view);
|
|
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);
|
|
tile_atlas_view->add_control_over_alternative_tiles(alternative_tiles_control_unscaled, false);
|
|
alternative_tiles_control_unscaled->set_mouse_filter(Control::MOUSE_FILTER_IGNORE);
|
|
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));
|
|
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.
|
|
// Inspector plugin.
|
|
Ref<EditorInspectorPluginTileData> tile_data_inspector_plugin;
|
|
Ref<EditorInspectorPluginTileData> tile_data_inspector_plugin;
|
|
tile_data_inspector_plugin.instantiate();
|
|
tile_data_inspector_plugin.instantiate();
|