From ea110ae724dc08b52f9a05a12ae273e4bc131f39 Mon Sep 17 00:00:00 2001 From: Relintai Date: Wed, 6 Mar 2024 01:11:54 +0100 Subject: [PATCH] Work on fixing compile when layered tile maps are enabled. --- .../doc_classes/LayeredTileSetAtlasSource.xml | 6 +- .../editor/atlas_merging_dialog.cpp | 2 +- .../editor/layered_tile_map_layer_editor.cpp | 655 ++++++++++-------- .../editor/layered_tile_map_layer_editor.h | 4 +- .../layered_tile_set_atlas_source_editor.cpp | 2 +- .../editor/layered_tile_set_editor.cpp | 4 +- modules/layered_tile_map/layered_tile_set.cpp | 14 +- modules/layered_tile_map/layered_tile_set.h | 4 + 8 files changed, 384 insertions(+), 307 deletions(-) diff --git a/modules/layered_tile_map/doc_classes/LayeredTileSetAtlasSource.xml b/modules/layered_tile_map/doc_classes/LayeredTileSetAtlasSource.xml index e6be6dda7..31f67206e 100644 --- a/modules/layered_tile_map/doc_classes/LayeredTileSetAtlasSource.xml +++ b/modules/layered_tile_map/doc_classes/LayeredTileSetAtlasSource.xml @@ -50,7 +50,7 @@ - + If [member use_texture_padding] is [code]false[/code], returns [member texture]. Otherwise, returns and internal [ImageTexture] created that includes the padding. @@ -146,7 +146,7 @@ - + @@ -266,7 +266,7 @@ Separation, in pixels, between each tile texture region of the grid. - + The atlas texture. diff --git a/modules/layered_tile_map/editor/atlas_merging_dialog.cpp b/modules/layered_tile_map/editor/atlas_merging_dialog.cpp index 2960f2000..d45399ee6 100644 --- a/modules/layered_tile_map/editor/atlas_merging_dialog.cpp +++ b/modules/layered_tile_map/editor/atlas_merging_dialog.cpp @@ -200,7 +200,7 @@ void AtlasMergingDialog::_merge_confirmed(const String &p_path) { ResourceLoader::import(p_path); - Ref new_texture_resource = ResourceLoader::load(p_path, "Texture2D"); + Ref new_texture_resource = ResourceLoader::load(p_path, "Texture"); merged->set_texture(new_texture_resource); UndoRedo *undo_redo = EditorNode::get_singleton()->get_undo_redo(); diff --git a/modules/layered_tile_map/editor/layered_tile_map_layer_editor.cpp b/modules/layered_tile_map/editor/layered_tile_map_layer_editor.cpp index a03bd2bc6..8d01de46d 100644 --- a/modules/layered_tile_map/editor/layered_tile_map_layer_editor.cpp +++ b/modules/layered_tile_map/editor/layered_tile_map_layer_editor.cpp @@ -44,8 +44,10 @@ #include "../layered_tile_map_layer.h" #include "scene/2d/camera_2d.h" #include "scene/gui/center_container.h" +#include "scene/gui/popup_menu.h" #include "scene/gui/split_container.h" +#include "core/containers/hash_set.h" #include "core/input/input.h" #include "core/math/geometry.h" #include "core/os/keyboard.h" @@ -115,33 +117,43 @@ void LayeredTileMapLayerEditorTilesPlugin::_update_transform_buttons() { } bool has_scene_tile = false; - for (const KeyValue &E : selection_pattern->get_pattern()) { - if (Object::cast_to(tile_set->get_source(E.value.source_id).ptr())) { + + for (const HashMap::Element *E = selection_pattern->get_pattern().front(); E; E = E->next) { + if (Object::cast_to(tile_set->get_source(E->value().source_id).ptr())) { has_scene_tile = true; break; } } if (has_scene_tile) { - _set_transform_buttons_state({}, { transform_button_rotate_left, transform_button_rotate_right, transform_button_flip_h, transform_button_flip_v }, - TTR("Can't transform scene tiles.")); + _set_transform_button_state_disabled(transform_button_rotate_left, TTR("Can't transform scene tiles.")); + _set_transform_button_state_disabled(transform_button_rotate_right, TTR("Can't transform scene tiles.")); + _set_transform_button_state_disabled(transform_button_flip_h, TTR("Can't transform scene tiles.")); + _set_transform_button_state_disabled(transform_button_flip_v, TTR("Can't transform scene tiles.")); + } else if (tile_set->get_tile_shape() != LayeredTileSet::TILE_SHAPE_SQUARE && selection_pattern->get_size() != Vector2i(1, 1)) { - _set_transform_buttons_state({ transform_button_flip_h, transform_button_flip_v }, { transform_button_rotate_left, transform_button_rotate_right }, - TTR("Can't rotate patterns when using non-square tile grid.")); + _set_transform_button_state_enabled(transform_button_flip_h); + _set_transform_button_state_enabled(transform_button_flip_v); + + _set_transform_button_state_disabled(transform_button_rotate_left, TTR("Can't rotate patterns when using non-square tile grid.")); + _set_transform_button_state_disabled(transform_button_rotate_right, TTR("Can't rotate patterns when using non-square tile grid.")); + } else { - _set_transform_buttons_state({ transform_button_rotate_left, transform_button_rotate_right, transform_button_flip_h, transform_button_flip_v }, {}, ""); + _set_transform_button_state_enabled(transform_button_rotate_left); + _set_transform_button_state_enabled(transform_button_rotate_right); + _set_transform_button_state_enabled(transform_button_flip_h); + _set_transform_button_state_enabled(transform_button_flip_v); } } -void LayeredTileMapLayerEditorTilesPlugin::_set_transform_buttons_state(const Vector