From 13d0ac8d5de12022a883221fb5e0cf9ad8ac8723 Mon Sep 17 00:00:00 2001 From: Relintai Date: Sat, 2 Mar 2024 09:13:07 +0100 Subject: [PATCH] Work on fixing compile when layered tile maps are enabled. --- .../doc_classes/LayeredTileData.xml | 4 +- .../doc_classes/LayeredTileMapPattern.xml | 2 +- .../doc_classes/LayeredTileSetAtlasSource.xml | 2 +- .../editor/layered_tile_data_editors.cpp | 38 +- .../editor/layered_tile_data_editors.h | 8 +- .../editor/layered_tile_map_layer_editor.cpp | 44 +-- .../layered_tile_set_atlas_source_editor.cpp | 44 +-- .../editor/layered_tile_set_editor.cpp | 10 +- ...le_set_scenes_collection_source_editor.cpp | 12 +- .../editor/layered_tiles_editor_plugin.cpp | 14 +- ..._tilemap_navigation_geometry_parser_2d.cpp | 25 +- modules/layered_tile_map/layered_tile_map.cpp | 14 +- .../layered_tile_map_layer.cpp | 6 +- .../layered_tile_map_layer_group.cpp | 2 +- modules/layered_tile_map/layered_tile_set.cpp | 332 +++++++++--------- modules/layered_tile_map/layered_tile_set.h | 20 +- 16 files changed, 288 insertions(+), 289 deletions(-) diff --git a/modules/layered_tile_map/doc_classes/LayeredTileData.xml b/modules/layered_tile_map/doc_classes/LayeredTileData.xml index eed24b537..02f8a9eea 100644 --- a/modules/layered_tile_map/doc_classes/LayeredTileData.xml +++ b/modules/layered_tile_map/doc_classes/LayeredTileData.xml @@ -25,7 +25,7 @@ - + @@ -134,7 +134,7 @@ - + Sets the points of the polygon at index [param polygon_index] for LayeredTileSet physics layer with index [param layer_id]. diff --git a/modules/layered_tile_map/doc_classes/LayeredTileMapPattern.xml b/modules/layered_tile_map/doc_classes/LayeredTileMapPattern.xml index 56d977032..4c1f13a14 100644 --- a/modules/layered_tile_map/doc_classes/LayeredTileMapPattern.xml +++ b/modules/layered_tile_map/doc_classes/LayeredTileMapPattern.xml @@ -50,7 +50,7 @@ Returns whether the pattern has a tile at the given coordinates. - + Returns whether the pattern is empty or not. diff --git a/modules/layered_tile_map/doc_classes/LayeredTileSetAtlasSource.xml b/modules/layered_tile_map/doc_classes/LayeredTileSetAtlasSource.xml index d6fee6be4..e6be6dda7 100644 --- a/modules/layered_tile_map/doc_classes/LayeredTileSetAtlasSource.xml +++ b/modules/layered_tile_map/doc_classes/LayeredTileSetAtlasSource.xml @@ -145,7 +145,7 @@ - + diff --git a/modules/layered_tile_map/editor/layered_tile_data_editors.cpp b/modules/layered_tile_map/editor/layered_tile_data_editors.cpp index 825ef39b9..ff8879d4c 100644 --- a/modules/layered_tile_map/editor/layered_tile_data_editors.cpp +++ b/modules/layered_tile_map/editor/layered_tile_data_editors.cpp @@ -183,7 +183,7 @@ void GenericTilePolygonEditor::_base_control_draw() { // Draw the polygons. for (const Vector &polygon : polygons) { Color color = polygon_color; - if (!in_creation_polygon.is_empty()) { + if (!in_creation_polygon.empty()) { color = color.darkened(0.3); } color.a = 0.5; @@ -198,7 +198,7 @@ void GenericTilePolygonEditor::_base_control_draw() { } // Draw the polygon in creation. - if (!in_creation_polygon.is_empty()) { + if (!in_creation_polygon.empty()) { for (int i = 0; i < in_creation_polygon.size() - 1; i++) { base_control->draw_line(in_creation_polygon[i], in_creation_polygon[i + 1], Color(1.0, 1.0, 1.0)); } @@ -209,7 +209,7 @@ void GenericTilePolygonEditor::_base_control_draw() { _snap_to_tile_shape(in_creation_point, in_creation_distance, grab_threshold / editor_zoom_widget->get_zoom()); _snap_point(in_creation_point); - if (drag_type == DRAG_TYPE_CREATE_POINT && !in_creation_polygon.is_empty()) { + if (drag_type == DRAG_TYPE_CREATE_POINT && !in_creation_polygon.empty()) { base_control->draw_line(in_creation_polygon[in_creation_polygon.size() - 1], in_creation_point, Color(1.0, 1.0, 1.0)); } @@ -225,7 +225,7 @@ void GenericTilePolygonEditor::_base_control_draw() { } base_control->draw_set_transform_matrix(Transform2D()); - if (!in_creation_polygon.is_empty()) { + if (!in_creation_polygon.empty()) { for (int i = 0; i < in_creation_polygon.size(); i++) { base_control->draw_texture(handle, xform.xform(in_creation_polygon[i]) - handle->get_size() / 2); } @@ -294,7 +294,7 @@ void GenericTilePolygonEditor::_advanced_menu_item_pressed(int p_item_pressed) { undo_redo->add_do_method(base_control, "queue_redraw"); undo_redo->add_do_method(this, "emit_signal", "polygons_changed"); undo_redo->add_undo_method(this, "clear_polygons"); - for (const PackedVector2Array &poly : polygons) { + for (const PoolVector2Array &poly : polygons) { undo_redo->add_undo_method(this, "add_polygon", poly); } undo_redo->add_undo_method(base_control, "queue_redraw"); @@ -307,7 +307,7 @@ void GenericTilePolygonEditor::_advanced_menu_item_pressed(int p_item_pressed) { undo_redo->add_do_method(base_control, "queue_redraw"); undo_redo->add_do_method(this, "emit_signal", "polygons_changed"); undo_redo->add_undo_method(this, "clear_polygons"); - for (const PackedVector2Array &polygon : polygons) { + for (const PoolVector2Array &polygon : polygons) { undo_redo->add_undo_method(this, "add_polygon", polygon); } undo_redo->add_undo_method(base_control, "queue_redraw"); @@ -582,8 +582,8 @@ void GenericTilePolygonEditor::_base_control_gui_input(Ref p_event) int closest_point; _grab_polygon_point(mb->get_position(), xform, closest_polygon, closest_point); if (closest_polygon >= 0) { - PackedVector2Array old_polygon = polygons[closest_polygon]; - polygons[closest_polygon].remove_at(closest_point); + PoolVector2Array old_polygon = polygons[closest_polygon]; + polygons[closest_polygon].remove(closest_point); undo_redo->create_action(TTR("Edit Polygons")); if (polygons[closest_polygon].size() < 3) { remove_polygon(closest_polygon); @@ -627,8 +627,8 @@ void GenericTilePolygonEditor::_base_control_gui_input(Ref p_event) int closest_point; _grab_polygon_point(mb->get_position(), xform, closest_polygon, closest_point); if (closest_polygon >= 0) { - PackedVector2Array old_polygon = polygons[closest_polygon]; - polygons[closest_polygon].remove_at(closest_point); + PoolVector2Array old_polygon = polygons[closest_polygon]; + polygons[closest_polygon].remove(closest_point); undo_redo->create_action(TTR("Edit Polygons")); if (polygons[closest_polygon].size() < 3) { remove_polygon(closest_polygon); @@ -771,7 +771,7 @@ int GenericTilePolygonEditor::add_polygon(const Vector &p_polygon, int p void GenericTilePolygonEditor::remove_polygon(int p_index) { ERR_FAIL_INDEX(p_index, (int)polygons.size()); - polygons.remove_at(p_index); + polygons.remove(p_index); if (polygons.size() == 0) { button_create->set_pressed(true); @@ -1253,7 +1253,7 @@ void TileDataDefaultEditor::draw_over_tile(CanvasItem *p_canvas_item, Transform2 } void TileDataDefaultEditor::setup_property_editor(Variant::Type p_type, const String &p_property, const String &p_label, const Variant &p_default_value) { - ERR_FAIL_COND_MSG(!property.is_empty(), "Cannot setup TileDataDefaultEditor twice"); + ERR_FAIL_COND_MSG(!property.empty(), "Cannot setup TileDataDefaultEditor twice"); property = p_property; property_type = p_type; @@ -1278,7 +1278,7 @@ void TileDataDefaultEditor::setup_property_editor(Variant::Type p_type, const St // Create and setup the property editor. property_editor = EditorInspectorDefaultPlugin::get_editor_for_property(dummy_object, p_type, p_property, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT); property_editor->set_object_and_property(dummy_object, p_property); - if (p_label.is_empty()) { + if (p_label.empty()) { property_editor->set_label(EditorPropertyNameProcessor::get_singleton()->process_name(p_property, EditorPropertyNameProcessor::get_default_inspector_style())); } else { property_editor->set_label(p_label); @@ -1752,7 +1752,7 @@ void TileDataCollisionEditor::draw_over_tile(CanvasItem *p_canvas_item, Transfor p_canvas_item->draw_polygon(polygon, color); if (tile_data->is_collision_polygon_one_way(physics_layer, i)) { - PackedVector2Array uvs; + PoolVector2Array uvs; uvs.resize(polygon.size()); Vector2 size_1 = Vector2(1, 1) / tile_set->get_tile_size(); @@ -1791,7 +1791,7 @@ void TileDataTerrainsEditor::_update_terrain_selector() { options.push_back(String(TTR("No terrain")) + String(":-1")); for (int i = 0; i < tile_set->get_terrains_count(terrain_set); i++) { String name = tile_set->get_terrain_name(terrain_set, i); - if (name.is_empty()) { + if (name.empty()) { options.push_back(vformat("Terrain %d", i)); } else { options.push_back(name); @@ -2003,7 +2003,7 @@ void TileDataTerrainsEditor::forward_draw_over_atlas(LayeredTileAtlasView *p_til for (int j = 0; j < polygon.size(); j++) { polygon.write[j] += position; } - if (!Geometry2D::intersect_polygons(polygon, mouse_pos_rect_polygon).is_empty()) { + if (!Geometry2D::intersect_polygons(polygon, mouse_pos_rect_polygon).empty()) { // Draw terrain. p_canvas_item->draw_polygon(polygon, color); } @@ -2015,7 +2015,7 @@ void TileDataTerrainsEditor::forward_draw_over_atlas(LayeredTileAtlasView *p_til for (int j = 0; j < polygon.size(); j++) { polygon.write[j] += position; } - if (!Geometry2D::intersect_polygons(polygon, mouse_pos_rect_polygon).is_empty()) { + if (!Geometry2D::intersect_polygons(polygon, mouse_pos_rect_polygon).empty()) { // Draw bit. p_canvas_item->draw_polygon(polygon, color); } @@ -2483,7 +2483,7 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(LayeredTileAtlasVi for (int j = 0; j < polygon.size(); j++) { polygon.write[j] += position; } - if (!Geometry2D::intersect_polygons(polygon, mouse_pos_rect_polygon).is_empty()) { + if (!Geometry2D::intersect_polygons(polygon, mouse_pos_rect_polygon).empty()) { // Draw terrain. undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain", coords.x, coords.y, E.alternative_tile), terrain); undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain", coords.x, coords.y, E.alternative_tile), tile_data->get_terrain()); @@ -2496,7 +2496,7 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(LayeredTileAtlasVi for (int j = 0; j < polygon.size(); j++) { polygon.write[j] += position; } - if (!Geometry2D::intersect_polygons(polygon, mouse_pos_rect_polygon).is_empty()) { + if (!Geometry2D::intersect_polygons(polygon, mouse_pos_rect_polygon).empty()) { // Draw bit. undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(LayeredTileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.alternative_tile), terrain); undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(LayeredTileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.alternative_tile), tile_data->get_terrain_peering_bit(bit)); diff --git a/modules/layered_tile_map/editor/layered_tile_data_editors.h b/modules/layered_tile_map/editor/layered_tile_data_editors.h index 8bd282dd2..5758b3d18 100644 --- a/modules/layered_tile_map/editor/layered_tile_data_editors.h +++ b/modules/layered_tile_map/editor/layered_tile_data_editors.h @@ -115,7 +115,7 @@ private: int drag_polygon_index = 0; int drag_point_index = 0; Vector2 drag_last_pos; - PackedVector2Array drag_old_polygon; + PoolVector2Array drag_old_polygon; HBoxContainer *toolbar = nullptr; Ref tools_button_group; @@ -286,7 +286,7 @@ private: // UI GenericTilePolygonEditor *polygon_editor = nullptr; - void _polygon_changed(const PackedVector2Array &p_polygon); + void _polygon_changed(const PoolVector2Array &p_polygon); virtual Variant _get_painted_value(); virtual void _set_painted_value(LayeredTileSetAtlasSource *p_tile_set_atlas_source, Vector2 p_coords, int p_alternative_tile); @@ -395,12 +395,12 @@ class TileDataNavigationEditor : public TileDataDefaultEditor { private: int navigation_layer = -1; - PackedVector2Array navigation_polygon; + PoolVector2Array navigation_polygon; // UI GenericTilePolygonEditor *polygon_editor = nullptr; - void _polygon_changed(const PackedVector2Array &p_polygon); + void _polygon_changed(const PoolVector2Array &p_polygon); virtual Variant _get_painted_value(); virtual void _set_painted_value(LayeredTileSetAtlasSource *p_tile_set_atlas_source, Vector2 p_coords, int p_alternative_tile); 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 d4da32c36..a68635e6e 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 @@ -189,7 +189,7 @@ void LayeredTileMapLayerEditorTilesPlugin::_update_tile_set_sources_list() { String item_text; // Common to all type of sources. - if (!source->get_name().is_empty()) { + if (!source->get_name().empty()) { item_text = source->get_name(); } @@ -197,7 +197,7 @@ void LayeredTileMapLayerEditorTilesPlugin::_update_tile_set_sources_list() { LayeredTileSetAtlasSource *atlas_source = Object::cast_to(source); if (atlas_source) { texture = atlas_source->get_texture(); - if (item_text.is_empty()) { + if (item_text.empty()) { if (texture.is_valid()) { item_text = texture->get_path().get_file(); } else { @@ -210,7 +210,7 @@ void LayeredTileMapLayerEditorTilesPlugin::_update_tile_set_sources_list() { LayeredTileSetScenesCollectionSource *scene_collection_source = Object::cast_to(source); if (scene_collection_source) { texture = tiles_bottom_panel->get_editor_theme_icon(SNAME("PackedScene")); - if (item_text.is_empty()) { + if (item_text.empty()) { if (scene_collection_source->get_scene_tiles_count() > 0) { item_text = vformat(TTR("Scene Collection Source (ID: %d)"), source_id); } else { @@ -220,7 +220,7 @@ void LayeredTileMapLayerEditorTilesPlugin::_update_tile_set_sources_list() { } // Use default if not valid. - if (item_text.is_empty()) { + if (item_text.empty()) { item_text = vformat(TTR("Unknown Type Source (ID: %d)"), source_id); } if (!texture.is_valid()) { @@ -547,7 +547,7 @@ bool LayeredTileMapLayerEditorTilesPlugin::forward_canvas_gui_input(const Refcreate_action(TTR("Delete tiles")); for (const Vector2i &coords : tile_map_selection) { @@ -590,7 +590,7 @@ bool LayeredTileMapLayerEditorTilesPlugin::forward_canvas_gui_input(const Refcreate_action(TTR("Delete tiles")); for (const Vector2i &coords : tile_map_selection) { @@ -848,7 +848,7 @@ void LayeredTileMapLayerEditorTilesPlugin::forward_canvas_draw_over_viewport(Con if (!(patterns_item_list->is_visible_in_tree() && patterns_item_list->has_point(patterns_item_list->get_local_mouse_position()))) { // Preview when moving. Vector2i top_left; - if (!tile_map_selection.is_empty()) { + if (!tile_map_selection.empty()) { top_left = tile_map_selection.front()->get(); } for (const Vector2i &E : tile_map_selection) { @@ -897,7 +897,7 @@ void LayeredTileMapLayerEditorTilesPlugin::forward_canvas_draw_over_viewport(Con } // Expand the grid if needed - if (expand_grid && !preview.is_empty()) { + if (expand_grid && !preview.empty()) { drawn_grid_rect = Rect2i(preview.begin()->key, Vector2i(0, 0)); for (const KeyValue &E : preview) { drawn_grid_rect.expand_to(E.key); @@ -906,7 +906,7 @@ void LayeredTileMapLayerEditorTilesPlugin::forward_canvas_draw_over_viewport(Con } } - if (!preview.is_empty()) { + if (!preview.empty()) { const int fading = 5; // Draw the lines of the grid behind the preview. @@ -1086,7 +1086,7 @@ HashMap LayeredTileMapLayerEditorTilesPlugin::_dra Ref pattern = p_erase ? erase_pattern : selection_pattern; HashMap output; - if (!pattern->is_empty()) { + if (!pattern->empty()) { // Paint the tiles on the tile map. if (!p_erase && random_tile_toggle->is_pressed()) { // Paint a random tile. @@ -1139,7 +1139,7 @@ HashMap LayeredTileMapLayerEditorTilesPlugin::_dra Ref pattern = p_erase ? erase_pattern : selection_pattern; HashMap err_output; - ERR_FAIL_COND_V(pattern->is_empty(), err_output); + ERR_FAIL_COND_V(pattern->empty(), err_output); // Compute the offset to align things to the bottom or right. bool aligned_right = p_end_cell.x < p_start_cell.x; @@ -1147,7 +1147,7 @@ HashMap LayeredTileMapLayerEditorTilesPlugin::_dra Vector2i offset = Vector2i(aligned_right ? -(pattern->get_size().x - (rect.get_size().x % pattern->get_size().x)) : 0, valigned_bottom ? -(pattern->get_size().y - (rect.get_size().y % pattern->get_size().y)) : 0); HashMap output; - if (!pattern->is_empty()) { + if (!pattern->empty()) { if (!p_erase && random_tile_toggle->is_pressed()) { // Paint a random tile. for (int x = 0; x < rect.size.x; x++) { @@ -1195,7 +1195,7 @@ HashMap LayeredTileMapLayerEditorTilesPlugin::_dra erase_pattern->set_cell(Vector2i(0, 0), LayeredTileSet::INVALID_SOURCE, LayeredTileSetSource::INVALID_ATLAS_COORDS, LayeredTileSetSource::INVALID_TILE_ALTERNATIVE); Ref pattern = p_erase ? erase_pattern : selection_pattern; - if (!pattern->is_empty()) { + if (!pattern->empty()) { LayeredTileMapCell source_cell = edited_layer->get_cell(p_coords); // If we are filling empty tiles, compute the tilemap boundaries. @@ -1209,7 +1209,7 @@ HashMap LayeredTileMapLayerEditorTilesPlugin::_dra RBSet already_checked; List to_check; to_check.push_back(p_coords); - while (!to_check.is_empty()) { + while (!to_check.empty()) { Vector2i coords = to_check.back()->get(); to_check.pop_back(); if (!already_checked.has(coords)) { @@ -1351,7 +1351,7 @@ void LayeredTileMapLayerEditorTilesPlugin::_stop_dragging() { } else { // Get the top-left cell. Vector2i top_left; - if (!tile_map_selection.is_empty()) { + if (!tile_map_selection.empty()) { top_left = tile_map_selection.front()->get(); } for (const Vector2i &E : tile_map_selection) { @@ -1439,7 +1439,7 @@ void LayeredTileMapLayerEditorTilesPlugin::_stop_dragging() { } Ref new_selection_pattern = edited_layer->get_pattern(coords_array); - if (!new_selection_pattern->is_empty()) { + if (!new_selection_pattern->empty()) { selection_pattern = new_selection_pattern; _update_tileset_selection_from_selection_pattern(); } @@ -1503,7 +1503,7 @@ void LayeredTileMapLayerEditorTilesPlugin::_stop_dragging() { } void LayeredTileMapLayerEditorTilesPlugin::_apply_transform(int p_type) { - if (selection_pattern.is_null() || selection_pattern->is_empty()) { + if (selection_pattern.is_null() || selection_pattern->empty()) { return; } @@ -1650,7 +1650,7 @@ void LayeredTileMapLayerEditorTilesPlugin::_update_fix_selected_and_hovered() { E = N; } - if (!tile_map_selection.is_empty()) { + if (!tile_map_selection.empty()) { _update_selection_pattern_from_tilemap_selection(); } else if (tiles_bottom_panel->is_visible_in_tree()) { _update_selection_pattern_from_tileset_tiles_selection(); @@ -2722,7 +2722,7 @@ RBSet LayeredTileMapLayerEditorTerrainsPlugin::_get_cells_for_bucket_f RBSet already_checked; List to_check; to_check.push_back(p_coords); - while (!to_check.is_empty()) { + while (!to_check.empty()) { Vector2i coords = to_check.back()->get(); to_check.pop_back(); if (!already_checked.has(coords)) { @@ -3216,7 +3216,7 @@ void LayeredTileMapLayerEditorTerrainsPlugin::forward_canvas_draw_over_viewport( } // Expand the grid if needed - if (expand_grid && !preview.is_empty()) { + if (expand_grid && !preview.empty()) { drawn_grid_rect = Rect2i(preview.front()->get(), Vector2i(1, 1)); for (const Vector2i &E : preview) { drawn_grid_rect.expand_to(E); @@ -3224,7 +3224,7 @@ void LayeredTileMapLayerEditorTerrainsPlugin::forward_canvas_draw_over_viewport( } } - if (!preview.is_empty()) { + if (!preview.empty()) { const int fading = 5; // Draw the lines of the grid behind the preview. diff --git a/modules/layered_tile_map/editor/layered_tile_set_atlas_source_editor.cpp b/modules/layered_tile_map/editor/layered_tile_set_atlas_source_editor.cpp index 607f24965..0f7d06c96 100644 --- a/modules/layered_tile_map/editor/layered_tile_set_atlas_source_editor.cpp +++ b/modules/layered_tile_map/editor/layered_tile_set_atlas_source_editor.cpp @@ -136,7 +136,7 @@ void LayeredTileSetAtlasSourceEditor::LayeredTileSetAtlasSourceProxyObject::edit // Disconnect to changes. if (tile_set_atlas_source.is_valid()) { - tile_set_atlas_source->disconnect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed)); + tile_set_atlas_source->disconnect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::property_list_changed_notify)); } tile_set = p_tile_set; @@ -145,12 +145,12 @@ void LayeredTileSetAtlasSourceEditor::LayeredTileSetAtlasSourceProxyObject::edit // Connect to changes. if (tile_set_atlas_source.is_valid()) { - if (!tile_set_atlas_source->is_connected(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed))) { - tile_set_atlas_source->connect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed)); + if (!tile_set_atlas_source->is_connected(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::property_list_changed_notify))) { + tile_set_atlas_source->connect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::property_list_changed_notify)); } } - notify_property_list_changed(); + property_list_changed_notify(); } // -- Proxy object used by the tile inspector -- @@ -272,7 +272,7 @@ bool LayeredTileSetAtlasSourceEditor::LayeredAtlasTileProxyObject::_set(const St tile_set_atlas_source->set_tile_animation_frames_count(tile.tile, frame_count); } } - notify_property_list_changed(); + property_list_changed_notify(); emit_signal(SNAME("changed"), "animation_separation"); return true; } else if (components.size() == 2 && components[0].begins_with("animation_frame_") && components[0].trim_prefix("animation_frame_").is_valid_int()) { @@ -510,7 +510,7 @@ void LayeredTileSetAtlasSourceEditor::LayeredAtlasTileProxyObject::_get_property void LayeredTileSetAtlasSourceEditor::LayeredAtlasTileProxyObject::edit(Ref p_tile_set_atlas_source, const RBSet &p_tiles) { ERR_FAIL_COND(!p_tile_set_atlas_source.is_valid()); - ERR_FAIL_COND(p_tiles.is_empty()); + ERR_FAIL_COND(p_tiles.empty()); for (const TileSelection &E : p_tiles) { ERR_FAIL_COND(E.tile == LayeredTileSetSource::INVALID_ATLAS_COORDS); ERR_FAIL_COND(E.alternative < 0); @@ -523,8 +523,8 @@ void LayeredTileSetAtlasSourceEditor::LayeredAtlasTileProxyObject::edit(Refhas_tile(coords) && tile_set_atlas_source->has_alternative_tile(coords, alternative)) { TileData *tile_data = tile_set_atlas_source->get_tile_data(coords, alternative); - if (tile_data->is_connected(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed))) { - tile_data->disconnect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed)); + if (tile_data->is_connected(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::property_list_changed_notify))) { + tile_data->disconnect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::property_list_changed_notify)); } } } @@ -539,13 +539,13 @@ void LayeredTileSetAtlasSourceEditor::LayeredAtlasTileProxyObject::edit(Refhas_tile(coords) && tile_set_atlas_source->has_alternative_tile(coords, alternative)) { TileData *tile_data = tile_set_atlas_source->get_tile_data(coords, alternative); - if (!tile_data->is_connected(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed))) { - tile_data->connect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed)); + if (!tile_data->is_connected(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::property_list_changed_notify))) { + tile_data->connect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::property_list_changed_notify)); } } } - notify_property_list_changed(); + property_list_changed_notify(); } void LayeredTileSetAtlasSourceEditor::LayeredAtlasTileProxyObject::_bind_methods() { @@ -606,11 +606,11 @@ void LayeredTileSetAtlasSourceEditor::_update_atlas_source_inspector() { void LayeredTileSetAtlasSourceEditor::_update_tile_inspector() { // Update visibility. if (tools_button_group->get_pressed_button() == tool_select_button) { - if (!selection.is_empty()) { + if (!selection.empty()) { tile_proxy_object->edit(tile_set_atlas_source, selection); } - tile_inspector->set_visible(!selection.is_empty()); - tile_inspector_no_tile_selected_label->set_visible(selection.is_empty()); + tile_inspector->set_visible(!selection.empty()); + tile_inspector_no_tile_selected_label->set_visible(selection.empty()); } else { tile_inspector->hide(); tile_inspector_no_tile_selected_label->hide(); @@ -801,7 +801,7 @@ void LayeredTileSetAtlasSourceEditor::_update_tile_data_editors() { String prop_name = tile_set->get_custom_data_layer_name(i); Variant::Type prop_type = tile_set->get_custom_data_layer_type(i); - if (prop_name.is_empty()) { + if (prop_name.empty()) { ADD_TILE_DATA_EDITOR(group, vformat(TTR("Custom Data %d"), i), editor_name); } else { ADD_TILE_DATA_EDITOR(group, prop_name, editor_name); @@ -873,7 +873,7 @@ void LayeredTileSetAtlasSourceEditor::_update_tile_data_editors() { void LayeredTileSetAtlasSourceEditor::_update_current_tile_data_editor() { // Find the property to use. String property; - if (tools_button_group->get_pressed_button() == tool_select_button && tile_inspector->is_visible() && !tile_inspector->get_selected_path().is_empty()) { + if (tools_button_group->get_pressed_button() == tool_select_button && tile_inspector->is_visible() && !tile_inspector->get_selected_path().empty()) { Vector components = tile_inspector->get_selected_path().split("/"); if (components.size() >= 1) { property = components[0]; @@ -1695,7 +1695,7 @@ void LayeredTileSetAtlasSourceEditor::_menu_option(int p_option) { void LayeredTileSetAtlasSourceEditor::shortcut_input(const Ref &p_event) { // Check for shortcuts. if (ED_IS_SHORTCUT("tiles_editor/delete_tile", p_event)) { - if (tools_button_group->get_pressed_button() == tool_select_button && !selection.is_empty()) { + if (tools_button_group->get_pressed_button() == tool_select_button && !selection.empty()) { _menu_option(TILE_DELETE); accept_event(); } @@ -2769,7 +2769,7 @@ void EditorPropertyTilePolygon::_add_focusable_children(Node *p_node) { } void EditorPropertyTilePolygon::_polygons_changed() { - if (String(count_property).is_empty()) { + if (String(count_property).empty()) { if (base_type == "OccluderPolygon2D") { // Single OccluderPolygon2D. Ref occluder; @@ -2800,7 +2800,7 @@ void EditorPropertyTilePolygon::_polygons_changed() { emit_changed(get_edited_property(), navigation_polygon); } } else { - if (base_type.is_empty()) { + if (base_type.empty()) { // Multiple array of vertices. Vector changed_properties; Array values; @@ -2819,7 +2819,7 @@ void EditorPropertyTilePolygon::_polygons_changed() { void EditorPropertyTilePolygon::update_property() { LayeredTileSetAtlasSourceEditor::LayeredAtlasTileProxyObject *atlas_tile_proxy_object = Object::cast_to(get_edited_object()); ERR_FAIL_NULL(atlas_tile_proxy_object); - ERR_FAIL_COND(atlas_tile_proxy_object->get_edited_tiles().is_empty()); + ERR_FAIL_COND(atlas_tile_proxy_object->get_edited_tiles().empty()); Ref tile_set_atlas_source = atlas_tile_proxy_object->get_edited_tile_set_atlas_source(); generic_tile_polygon_editor->set_tile_set(Ref(tile_set_atlas_source->get_tile_set())); @@ -2833,7 +2833,7 @@ void EditorPropertyTilePolygon::update_property() { // Reset the polygons. generic_tile_polygon_editor->clear_polygons(); - if (String(count_property).is_empty()) { + if (String(count_property).empty()) { if (base_type == "OccluderPolygon2D") { // Single OccluderPolygon2D. Ref occluder = get_edited_property_value(); @@ -2853,7 +2853,7 @@ void EditorPropertyTilePolygon::update_property() { } } else { int count = get_edited_object()->get(count_property); - if (base_type.is_empty()) { + if (base_type.empty()) { // Multiple array of vertices. generic_tile_polygon_editor->clear_polygons(); for (int i = 0; i < count; i++) { diff --git a/modules/layered_tile_map/editor/layered_tile_set_editor.cpp b/modules/layered_tile_map/editor/layered_tile_set_editor.cpp index 571bc8ea2..935757ea9 100644 --- a/modules/layered_tile_map/editor/layered_tile_set_editor.cpp +++ b/modules/layered_tile_map/editor/layered_tile_set_editor.cpp @@ -129,7 +129,7 @@ void LayeredTileSetEditor::_load_texture_files(const Vector &p_paths) { atlases.append(atlas_source); } - if (!atlases.is_empty()) { + if (!atlases.empty()) { tile_set_atlas_source_editor->init_new_atlases(atlases); } @@ -170,7 +170,7 @@ void LayeredTileSetEditor::_update_sources_list(int force_selected_id) { String item_text; // Common to all type of sources. - if (!source->get_name().is_empty()) { + if (!source->get_name().empty()) { item_text = source->get_name(); } @@ -178,7 +178,7 @@ void LayeredTileSetEditor::_update_sources_list(int force_selected_id) { LayeredTileSetAtlasSource *atlas_source = Object::cast_to(source); if (atlas_source) { texture = atlas_source->get_texture(); - if (item_text.is_empty()) { + if (item_text.empty()) { if (texture.is_valid()) { item_text = texture->get_path().get_file(); } else { @@ -191,7 +191,7 @@ void LayeredTileSetEditor::_update_sources_list(int force_selected_id) { LayeredTileSetScenesCollectionSource *scene_collection_source = Object::cast_to(source); if (scene_collection_source) { texture = get_editor_theme_icon(SNAME("PackedScene")); - if (item_text.is_empty()) { + if (item_text.empty()) { if (scene_collection_source->get_scene_tiles_count() > 0) { item_text = vformat(TTR("Scene Collection Source (ID: %d)"), source_id); } else { @@ -201,7 +201,7 @@ void LayeredTileSetEditor::_update_sources_list(int force_selected_id) { } // Use default if not valid. - if (item_text.is_empty()) { + if (item_text.empty()) { item_text = vformat(TTR("Unknown Type Source (ID: %d)"), source_id); } if (!texture.is_valid()) { diff --git a/modules/layered_tile_map/editor/layered_tile_set_scenes_collection_source_editor.cpp b/modules/layered_tile_map/editor/layered_tile_set_scenes_collection_source_editor.cpp index 20bd07b65..d965d74b6 100644 --- a/modules/layered_tile_map/editor/layered_tile_set_scenes_collection_source_editor.cpp +++ b/modules/layered_tile_map/editor/layered_tile_set_scenes_collection_source_editor.cpp @@ -118,7 +118,7 @@ void LayeredTileSetScenesCollectionSourceEditor::LayeredTileSetScenesCollectionP // Disconnect to changes. if (tile_set_scenes_collection_source) { - tile_set_scenes_collection_source->disconnect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed)); + tile_set_scenes_collection_source->disconnect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::property_list_changed_notify)); } tile_set = p_tile_set; @@ -127,12 +127,12 @@ void LayeredTileSetScenesCollectionSourceEditor::LayeredTileSetScenesCollectionP // Connect to changes. if (tile_set_scenes_collection_source) { - if (!tile_set_scenes_collection_source->is_connected(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed))) { - tile_set_scenes_collection_source->connect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::notify_property_list_changed)); + if (!tile_set_scenes_collection_source->is_connected(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::property_list_changed_notify))) { + tile_set_scenes_collection_source->connect(CoreStringNames::get_singleton()->property_list_changed, callable_mp((Object *)this, &Object::property_list_changed_notify)); } } - notify_property_list_changed(); + property_list_changed_notify(); } // -- Proxy object used by the tile inspector -- @@ -208,7 +208,7 @@ void LayeredTileSetScenesCollectionSourceEditor::LayeredSceneTileProxyObject::ed tile_set_scenes_collection_source = p_tile_set_scenes_collection_source; scene_id = p_scene_id; - notify_property_list_changed(); + property_list_changed_notify(); } void LayeredTileSetScenesCollectionSourceEditor::LayeredSceneTileProxyObject::_bind_methods() { @@ -270,7 +270,7 @@ void LayeredTileSetScenesCollectionSourceEditor::_scene_file_selected(const Stri void LayeredTileSetScenesCollectionSourceEditor::_source_delete_pressed() { Vector selected_indices = scene_tiles_list->get_selected_items(); - ERR_FAIL_COND(selected_indices.is_empty()); + ERR_FAIL_COND(selected_indices.empty()); int scene_id = scene_tiles_list->get_item_metadata(selected_indices[0]); EditorUndoRedoManager *undo_redo = EditorUndoRedoManager::get_singleton(); diff --git a/modules/layered_tile_map/editor/layered_tiles_editor_plugin.cpp b/modules/layered_tile_map/editor/layered_tiles_editor_plugin.cpp index 49fecd4c9..62b591c10 100644 --- a/modules/layered_tile_map/editor/layered_tiles_editor_plugin.cpp +++ b/modules/layered_tile_map/editor/layered_tiles_editor_plugin.cpp @@ -86,7 +86,7 @@ void LayeredTilesEditorUtils::_thread() { thumbnail_size *= EDSCALE; Vector2 thumbnail_size2 = Vector2(thumbnail_size, thumbnail_size); - if (item.pattern.is_valid() && !item.pattern->is_empty()) { + if (item.pattern.is_valid() && !item.pattern->empty()) { // Generate the pattern preview SubViewport *viewport = memnew(SubViewport); viewport->set_size(thumbnail_size2); @@ -242,19 +242,19 @@ bool LayeredTilesEditorUtils::SourceNameComparator::operator()(const int &p_a, c { LayeredTileSetSource *source = *tile_set->get_source(p_a); - if (!source->get_name().is_empty()) { + if (!source->get_name().empty()) { name_a = source->get_name(); } LayeredTileSetAtlasSource *atlas_source = Object::cast_to(source); if (atlas_source) { Ref texture = atlas_source->get_texture(); - if (name_a.is_empty() && texture.is_valid()) { + if (name_a.empty() && texture.is_valid()) { name_a = texture->get_path().get_file(); } } - if (name_a.is_empty()) { + if (name_a.empty()) { name_a = itos(p_a); } } @@ -262,19 +262,19 @@ bool LayeredTilesEditorUtils::SourceNameComparator::operator()(const int &p_a, c { LayeredTileSetSource *source = *tile_set->get_source(p_b); - if (!source->get_name().is_empty()) { + if (!source->get_name().empty()) { name_b = source->get_name(); } LayeredTileSetAtlasSource *atlas_source = Object::cast_to(source); if (atlas_source) { Ref texture = atlas_source->get_texture(); - if (name_b.is_empty() && texture.is_valid()) { + if (name_b.empty() && texture.is_valid()) { name_b = texture->get_path().get_file(); } } - if (name_b.is_empty()) { + if (name_b.empty()) { name_b = itos(p_b); } } diff --git a/modules/layered_tile_map/geometry_parser/layered_tilemap_navigation_geometry_parser_2d.cpp b/modules/layered_tile_map/geometry_parser/layered_tilemap_navigation_geometry_parser_2d.cpp index c8af30a52..3e190c7aa 100644 --- a/modules/layered_tile_map/geometry_parser/layered_tilemap_navigation_geometry_parser_2d.cpp +++ b/modules/layered_tile_map/geometry_parser/layered_tilemap_navigation_geometry_parser_2d.cpp @@ -29,17 +29,19 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#include "tilemap_navigation_geometry_parser_2d.h" +#include "layered_tilemap_navigation_geometry_parser_2d.h" //#include "scene/2d/tile_map.h" -#include "modules/tile_map/tile_map.h" -#include "modules/tile_map/tile_set.h" +#include "../layered_tile_map.h" +#include "../layered_tile_set.h" + #include "scene/resources/navigation_2d/navigation_mesh_source_geometry_data_2d.h" #include "scene/resources/navigation_2d/navigation_polygon.h" #include "modules/modules_enabled.gen.h" +/* bool LayeredTileMap2DNavigationGeometryParser2D::parses_node(Node *p_node) { return (Object::cast_to(p_node) != nullptr); } @@ -83,25 +85,12 @@ void LayeredTileMap2DNavigationGeometryParser2D::parse_geometry(Node *p_node, Re p_source_geometry->_add_traversable_outline(traversable_outline_new); } } - - /* - TODO - if (parsed_geometry_type != NavigationPolygon::PARSED_GEOMETRY_MESH_INSTANCES && (tilemap->get_collision_layer() & navigation_polygon_collision_mask)) { - for (int collision_polygon_index = 0; collision_polygon_index < tile_set->tile_get_shape_count(cell_id); collision_polygon_index++) { - Vector obstruction_outline = tile_set->get_collision_polygon_points(collision_polygon_index); - - for (int obstruction_outline_index = 0; obstruction_outline_index < obstruction_outline.size(); obstruction_outline_index++) { - obstruction_outline.write[obstruction_outline_index] = tile_transform_offset.xform(obstruction_outline[obstruction_outline_index]); - } - - p_source_geometry->_add_obstruction_outline(obstruction_outline); - } - } - */ } } } +*/ + bool LayeredTileMap2DNavigationGeometryParser2D::parses_node(Node *p_node) { return (Object::cast_to(p_node) != nullptr); } diff --git a/modules/layered_tile_map/layered_tile_map.cpp b/modules/layered_tile_map/layered_tile_map.cpp index 077cc9588..524bd30e4 100644 --- a/modules/layered_tile_map/layered_tile_map.cpp +++ b/modules/layered_tile_map/layered_tile_map.cpp @@ -222,7 +222,7 @@ void LayeredTileMap::add_layer(int p_to_pos) { } new_layer->connect(CoreStringNames::get_singleton()->changed, callable_mp(this, &LayeredTileMap::_emit_changed)); - notify_property_list_changed(); + property_list_changed_notify(); _emit_changed(); @@ -236,12 +236,12 @@ void LayeredTileMap::move_layer(int p_layer, int p_to_pos) { // Clear before shuffling layers. LayeredTileMapLayer *layer = layers[p_layer]; layers.insert(p_to_pos, layer); - layers.remove_at(p_to_pos < p_layer ? p_layer + 1 : p_layer); + layers.remove(p_to_pos < p_layer ? p_layer + 1 : p_layer); for (uint32_t i = 0; i < layers.size(); i++) { move_child(layers[i], i); layers[i]->set_as_tile_map_internal_node(i); } - notify_property_list_changed(); + property_list_changed_notify(); _emit_changed(); @@ -253,11 +253,11 @@ void LayeredTileMap::remove_layer(int p_layer) { // Clear before removing the layer. layers[p_layer]->queue_free(); - layers.remove_at(p_layer); + layers.remove(p_layer); for (uint32_t i = 0; i < layers.size(); i++) { layers[i]->set_as_tile_map_internal_node(i); } - notify_property_list_changed(); + property_list_changed_notify(); _emit_changed(); @@ -508,7 +508,7 @@ void LayeredTileMap::notify_runtime_tile_data_update(int p_layer) { #ifdef TOOLS_ENABLED Rect2 LayeredTileMap::_edit_get_rect() const { // Return the visible rect of the tilemap. - if (layers.is_empty()) { + if (layers.empty()) { return Rect2(); } @@ -570,7 +570,7 @@ bool LayeredTileMap::_set(const StringName &p_name, const Variant &p_value) { layers.push_back(new_layer); } - notify_property_list_changed(); + property_list_changed_notify(); _emit_changed(); update_configuration_warnings(); } diff --git a/modules/layered_tile_map/layered_tile_map_layer.cpp b/modules/layered_tile_map/layered_tile_map_layer.cpp index 9efef876a..278fb0b4e 100644 --- a/modules/layered_tile_map/layered_tile_map_layer.cpp +++ b/modules/layered_tile_map/layered_tile_map_layer.cpp @@ -1118,7 +1118,7 @@ void LayeredTileMapLayer::_navigation_draw_cell_debug(const RID &p_canvas_item, } // Check if the navigation is used. - if (r_cell_data.navigation_regions.is_empty()) { + if (r_cell_data.navigation_regions.empty()) { return; } @@ -1458,7 +1458,7 @@ LayeredTileSet::TerrainsPattern LayeredTileMapLayer::_get_best_terrain_pattern_f // Returns all tiles compatible with the given constraints. RBMap terrain_pattern_score; RBSet pattern_set = tile_set->get_terrains_pattern_set(p_terrain_set); - ERR_FAIL_COND_V(pattern_set.is_empty(), LayeredTileSet::TerrainsPattern()); + ERR_FAIL_COND_V(pattern_set.empty(), LayeredTileSet::TerrainsPattern()); for (LayeredTileSet::TerrainsPattern &terrain_pattern : pattern_set) { int score = 0; @@ -2347,7 +2347,7 @@ Ref LayeredTileMapLayer::get_pattern(PoolVector2iArray p_ Ref output; output.instantiate(); - if (p_coords_array.is_empty()) { + if (p_coords_array.empty()) { return output; } diff --git a/modules/layered_tile_map/layered_tile_map_layer_group.cpp b/modules/layered_tile_map/layered_tile_map_layer_group.cpp index ad2f2649a..c2782a8f5 100644 --- a/modules/layered_tile_map/layered_tile_map_layer_group.cpp +++ b/modules/layered_tile_map/layered_tile_map_layer_group.cpp @@ -42,7 +42,7 @@ void LayeredTileMapLayerGroup::_cleanup_selected_layers() { const String name = selected_layers[i]; LayeredTileMapLayer *layer = Object::cast_to(get_node_or_null(name)); if (!layer) { - selected_layers.remove_at(i); + selected_layers.remove(i); i--; } } diff --git a/modules/layered_tile_map/layered_tile_set.cpp b/modules/layered_tile_map/layered_tile_set.cpp index c3845235c..3a1bb24e7 100644 --- a/modules/layered_tile_map/layered_tile_set.cpp +++ b/modules/layered_tile_map/layered_tile_set.cpp @@ -34,6 +34,7 @@ #include "core/containers/local_vector.h" #include "core/containers/rb_set.h" +#include "core/core_string_names.h" #include "core/io/marshalls.h" #include "core/math/geometry.h" #include "scene/main/control.h" @@ -75,7 +76,7 @@ void LayeredTileMapPattern::_set_tile_data(const Vector &p_data) { uint16_t alternative_tile = decode_uint16(&local[10]); set_cell(Vector2i(x, y), source_id, Vector2i(atlas_coords_x, atlas_coords_y), alternative_tile); } - emit_signal(SNAME("changed")); + emit_signal("changed"); } Vector LayeredTileMapPattern::_get_tile_data() const { @@ -87,14 +88,15 @@ Vector LayeredTileMapPattern::_get_tile_data() const { // Save in highest format int idx = 0; - for (const KeyValue &E : pattern) { + + for (const HashMap::Element *E = pattern.front(); E; E = E->next) { uint8_t *ptr = (uint8_t *)&w[idx]; - encode_uint16((int16_t)(E.key.x), &ptr[0]); - encode_uint16((int16_t)(E.key.y), &ptr[2]); - encode_uint16(E.value.source_id, &ptr[4]); - encode_uint16(E.value.coord_x, &ptr[6]); - encode_uint16(E.value.coord_y, &ptr[8]); - encode_uint16(E.value.alternative_tile, &ptr[10]); + encode_uint16((int16_t)(E->key().x), &ptr[0]); + encode_uint16((int16_t)(E->key().y), &ptr[2]); + encode_uint16(E->value().source_id, &ptr[4]); + encode_uint16(E->value().coord_x, &ptr[6]); + encode_uint16(E->value().coord_y, &ptr[8]); + encode_uint16(E->value().alternative_tile, &ptr[10]); idx += 3; } @@ -119,8 +121,8 @@ void LayeredTileMapPattern::remove_cell(const Vector2i &p_coords, bool p_update_ pattern.erase(p_coords); if (p_update_size) { size = Size2i(); - for (const KeyValue &E : pattern) { - size = size.max(E.key + Vector2i(1, 1)); + for (const HashMap::Element *E = pattern.front(); E; E = E->next) { + size = size.max(E->key() + Vector2i(1, 1)); } } emit_changed(); @@ -149,8 +151,8 @@ PoolVector2iArray LayeredTileMapPattern::get_used_cells() const { PoolVector2iArray a; a.resize(pattern.size()); int i = 0; - for (const KeyValue &E : pattern) { - Vector2i p(E.key.x, E.key.y); + for (const HashMap::Element *E = pattern.front(); E; E = E->next) { + Vector2i p(E->key().x, E->key().y); a[i++] = p; } @@ -162,8 +164,8 @@ Size2i LayeredTileMapPattern::get_size() const { } void LayeredTileMapPattern::set_size(const Size2i &p_size) { - for (const KeyValue &E : pattern) { - Vector2i coords = E.key; + for (const HashMap::Element *E = pattern.front(); E; E = E->next) { + Vector2i coords = E->key(); if (p_size.x <= coords.x || p_size.y <= coords.y) { ERR_FAIL_MSG(vformat("Cannot set pattern size to %s, it contains a tile at %s. Size can only be increased.", p_size, coords)); }; @@ -173,8 +175,8 @@ void LayeredTileMapPattern::set_size(const Size2i &p_size) { emit_changed(); } -bool LayeredTileMapPattern::is_empty() const { - return pattern.is_empty(); +bool LayeredTileMapPattern::empty() const { + return pattern.empty(); }; void LayeredTileMapPattern::clear() { @@ -203,7 +205,7 @@ bool LayeredTileMapPattern::_get(const StringName &p_name, Variant &r_ret) const } void LayeredTileMapPattern::_get_property_list(List *p_list) const { - p_list->push_back(PropertyInfo(Variant::OBJECT, "tile_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL)); + p_list->push_back(PropertyInfo(Variant::OBJECT, "tile_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL)); } void LayeredTileMapPattern::_bind_methods() { @@ -217,7 +219,7 @@ void LayeredTileMapPattern::_bind_methods() { ClassDB::bind_method(D_METHOD("get_used_cells"), &LayeredTileMapPattern::get_used_cells); ClassDB::bind_method(D_METHOD("get_size"), &LayeredTileMapPattern::get_size); ClassDB::bind_method(D_METHOD("set_size", "size"), &LayeredTileMapPattern::set_size); - ClassDB::bind_method(D_METHOD("is_empty"), &LayeredTileMapPattern::is_empty); + ClassDB::bind_method(D_METHOD("empty"), &LayeredTileMapPattern::empty); } /////////////////////////////// LayeredTileSet ////////////////////////////////////// @@ -328,35 +330,35 @@ LayeredTileSet::TerrainsPattern::TerrainsPattern(const LayeredTileSet *p_tile_se const int LayeredTileSet::INVALID_SOURCE = -1; const char *LayeredTileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[] = { - PNAME("right_side"), - PNAME("right_corner"), - PNAME("bottom_right_side"), - PNAME("bottom_right_corner"), - PNAME("bottom_side"), - PNAME("bottom_corner"), - PNAME("bottom_left_side"), - PNAME("bottom_left_corner"), - PNAME("left_side"), - PNAME("left_corner"), - PNAME("top_left_side"), - PNAME("top_left_corner"), - PNAME("top_side"), - PNAME("top_corner"), - PNAME("top_right_side"), - PNAME("top_right_corner"), + "right_side", + "right_corner", + "bottom_right_side", + "bottom_right_corner", + "bottom_side", + "bottom_corner", + "bottom_left_side", + "bottom_left_corner", + "left_side", + "left_corner", + "top_left_side", + "top_left_corner", + "top_side", + "top_corner", + "top_right_side", + "top_right_corner", }; // -- Shape and layout -- void LayeredTileSet::set_tile_shape(LayeredTileSet::TileShape p_shape) { tile_shape = p_shape; - for (KeyValue> &E_source : sources) { - E_source.value->notify_tile_data_properties_should_change(); + for (HashMap>::Element *E_source = sources.front(); E_source; E_source = E_source->next) { + E_source->value()->notify_tile_data_properties_should_change(); } terrain_bits_meshes_dirty = true; tile_meshes_dirty = true; - notify_property_list_changed(); + property_list_changed_notify(); emit_changed(); } LayeredTileSet::TileShape LayeredTileSet::get_tile_shape() const { @@ -374,8 +376,8 @@ LayeredTileSet::TileLayout LayeredTileSet::get_tile_layout() const { void LayeredTileSet::set_tile_offset_axis(LayeredTileSet::TileOffsetAxis p_alignment) { tile_offset_axis = p_alignment; - for (KeyValue> &E_source : sources) { - E_source.value->notify_tile_data_properties_should_change(); + for (HashMap>::Element *E_source = sources.front(); E_source; E_source = E_source->next) { + E_source->value()->notify_tile_data_properties_should_change(); } terrain_bits_meshes_dirty = true; @@ -405,12 +407,13 @@ void LayeredTileSet::_update_terrains_cache() { if (terrains_cache_dirty) { // Organizes tiles into structures. per_terrain_pattern_tiles.resize(terrain_sets.size()); - for (RBMap> &tiles : per_terrain_pattern_tiles) { - tiles.clear(); + + for (int i = 0; i < per_terrain_pattern_tiles.size(); ++i) { + per_terrain_pattern_tiles[i].clear(); } - for (const KeyValue> &kv : sources) { - Ref source = kv.value; + for (const HashMap>::Element *kv = sources.front(); kv; kv = kv->next) { + Ref source = kv->value(); Ref atlas_source = source; if (atlas_source.is_valid()) { for (int tile_index = 0; tile_index < source->get_tiles_count(); tile_index++) { @@ -423,7 +426,7 @@ void LayeredTileSet::_update_terrains_cache() { int terrain_set = tile_data->get_terrain_set(); if (terrain_set >= 0) { LayeredTileMapCell cell; - cell.source_id = kv.key; + cell.source_id = kv->key(); cell.set_atlas_coords(tile_id); cell.alternative_tile = alternative_id; @@ -488,7 +491,7 @@ int LayeredTileSet::add_source(Ref p_tile_set_source, int p_tile_set_source->set_tile_set(this); _compute_next_source_id(); - sources[new_source_id]->connect_changed(callable_mp(this, &LayeredTileSet::_source_changed)); + sources[new_source_id]->connect(CoreStringNames::get_singleton()->changed, this, "_source_changed"); terrains_cache_dirty = true; emit_changed(); @@ -499,7 +502,7 @@ int LayeredTileSet::add_source(Ref p_tile_set_source, int void LayeredTileSet::remove_source(int p_source_id) { ERR_FAIL_COND_MSG(!sources.has(p_source_id), vformat("Cannot remove LayeredTileSet atlas source. No tileset atlas source with id %d.", p_source_id)); - sources[p_source_id]->disconnect_changed(callable_mp(this, &LayeredTileSet::_source_changed)); + sources[p_source_id]->connect(CoreStringNames::get_singleton()->changed, this, "_source_changed"); sources[p_source_id]->set_tile_set(nullptr); sources.erase(p_source_id); @@ -511,9 +514,9 @@ void LayeredTileSet::remove_source(int p_source_id) { } void LayeredTileSet::remove_source_ptr(LayeredTileSetSource *p_tile_set_source) { - for (const KeyValue> &kv : sources) { - if (kv.value.ptr() == p_tile_set_source) { - remove_source(kv.key); + for (const HashMap>::Element *kv = sources.front(); kv; kv = kv->next) { + if (kv->value().ptr() == p_tile_set_source) { + remove_source(kv->key()); return; } } @@ -585,11 +588,11 @@ void LayeredTileSet::add_occlusion_layer(int p_index) { ERR_FAIL_INDEX(p_index, occlusion_layers.size() + 1); occlusion_layers.insert(p_index, OcclusionLayer()); - for (KeyValue> source : sources) { - source.value->add_occlusion_layer(p_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->add_occlusion_layer(p_index); } - notify_property_list_changed(); + property_list_changed_notify(); emit_changed(); } @@ -597,21 +600,24 @@ void LayeredTileSet::move_occlusion_layer(int p_from_index, int p_to_pos) { ERR_FAIL_INDEX(p_from_index, occlusion_layers.size()); ERR_FAIL_INDEX(p_to_pos, occlusion_layers.size() + 1); occlusion_layers.insert(p_to_pos, occlusion_layers[p_from_index]); - occlusion_layers.remove_at(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); - for (KeyValue> source : sources) { - source.value->move_occlusion_layer(p_from_index, p_to_pos); + occlusion_layers.remove(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->move_occlusion_layer(p_from_index, p_to_pos); } - notify_property_list_changed(); + property_list_changed_notify(); emit_changed(); } void LayeredTileSet::remove_occlusion_layer(int p_index) { ERR_FAIL_INDEX(p_index, occlusion_layers.size()); - occlusion_layers.remove_at(p_index); - for (KeyValue> source : sources) { - source.value->remove_occlusion_layer(p_index); + + occlusion_layers.remove(p_index); + + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->remove_occlusion_layer(p_index); } - notify_property_list_changed(); + + property_list_changed_notify(); emit_changed(); } @@ -648,11 +654,11 @@ void LayeredTileSet::add_physics_layer(int p_index) { ERR_FAIL_INDEX(p_index, physics_layers.size() + 1); physics_layers.insert(p_index, PhysicsLayer()); - for (KeyValue> source : sources) { - source.value->add_physics_layer(p_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->add_physics_layer(p_index); } - notify_property_list_changed(); + property_list_changed_notify(); emit_changed(); } @@ -660,21 +666,21 @@ void LayeredTileSet::move_physics_layer(int p_from_index, int p_to_pos) { ERR_FAIL_INDEX(p_from_index, physics_layers.size()); ERR_FAIL_INDEX(p_to_pos, physics_layers.size() + 1); physics_layers.insert(p_to_pos, physics_layers[p_from_index]); - physics_layers.remove_at(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); - for (KeyValue> source : sources) { - source.value->move_physics_layer(p_from_index, p_to_pos); + physics_layers.remove(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->move_physics_layer(p_from_index, p_to_pos); } - notify_property_list_changed(); + property_list_changed_notify(); emit_changed(); } void LayeredTileSet::remove_physics_layer(int p_index) { ERR_FAIL_INDEX(p_index, physics_layers.size()); - physics_layers.remove_at(p_index); - for (KeyValue> source : sources) { - source.value->remove_physics_layer(p_index); + physics_layers.remove(p_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->remove_physics_layer(p_index); } - notify_property_list_changed(); + property_list_changed_notify(); emit_changed(); } @@ -722,11 +728,11 @@ void LayeredTileSet::add_terrain_set(int p_index) { ERR_FAIL_INDEX(p_index, terrain_sets.size() + 1); terrain_sets.insert(p_index, TerrainSet()); - for (KeyValue> source : sources) { - source.value->add_terrain_set(p_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->add_terrain_set(p_index); } - notify_property_list_changed(); + property_list_changed_notify(); terrains_cache_dirty = true; emit_changed(); } @@ -735,22 +741,22 @@ void LayeredTileSet::move_terrain_set(int p_from_index, int p_to_pos) { ERR_FAIL_INDEX(p_from_index, terrain_sets.size()); ERR_FAIL_INDEX(p_to_pos, terrain_sets.size() + 1); terrain_sets.insert(p_to_pos, terrain_sets[p_from_index]); - terrain_sets.remove_at(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); - for (KeyValue> source : sources) { - source.value->move_terrain_set(p_from_index, p_to_pos); + terrain_sets.remove(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->move_terrain_set(p_from_index, p_to_pos); } - notify_property_list_changed(); + property_list_changed_notify(); terrains_cache_dirty = true; emit_changed(); } void LayeredTileSet::remove_terrain_set(int p_index) { ERR_FAIL_INDEX(p_index, terrain_sets.size()); - terrain_sets.remove_at(p_index); - for (KeyValue> source : sources) { - source.value->remove_terrain_set(p_index); + terrain_sets.remove(p_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->remove_terrain_set(p_index); } - notify_property_list_changed(); + property_list_changed_notify(); terrains_cache_dirty = true; emit_changed(); } @@ -758,11 +764,11 @@ void LayeredTileSet::remove_terrain_set(int p_index) { void LayeredTileSet::set_terrain_set_mode(int p_terrain_set, TerrainMode p_terrain_mode) { ERR_FAIL_INDEX(p_terrain_set, terrain_sets.size()); terrain_sets.write[p_terrain_set].mode = p_terrain_mode; - for (KeyValue> &E_source : sources) { - E_source.value->notify_tile_data_properties_should_change(); + for (HashMap>::Element *E_source = sources.front(); E_source; E_source = E_source->next) { + E_source->value()->notify_tile_data_properties_should_change(); } - notify_property_list_changed(); + property_list_changed_notify(); terrains_cache_dirty = true; emit_changed(); } @@ -793,11 +799,11 @@ void LayeredTileSet::add_terrain(int p_terrain_set, int p_index) { terrains.write[p_index].color = c; terrains.write[p_index].name = String(vformat("Terrain %d", p_index)); - for (KeyValue> source : sources) { - source.value->add_terrain(p_terrain_set, p_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->add_terrain(p_terrain_set, p_index); } - notify_property_list_changed(); + property_list_changed_notify(); terrains_cache_dirty = true; emit_changed(); } @@ -809,11 +815,11 @@ void LayeredTileSet::move_terrain(int p_terrain_set, int p_from_index, int p_to_ ERR_FAIL_INDEX(p_from_index, terrains.size()); ERR_FAIL_INDEX(p_to_pos, terrains.size() + 1); terrains.insert(p_to_pos, terrains[p_from_index]); - terrains.remove_at(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); - for (KeyValue> source : sources) { - source.value->move_terrain(p_terrain_set, p_from_index, p_to_pos); + terrains.remove(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->move_terrain(p_terrain_set, p_from_index, p_to_pos); } - notify_property_list_changed(); + property_list_changed_notify(); terrains_cache_dirty = true; emit_changed(); } @@ -823,11 +829,11 @@ void LayeredTileSet::remove_terrain(int p_terrain_set, int p_index) { Vector &terrains = terrain_sets.write[p_terrain_set].terrains; ERR_FAIL_INDEX(p_index, terrains.size()); - terrains.remove_at(p_index); - for (KeyValue> source : sources) { - source.value->remove_terrain(p_terrain_set, p_index); + terrains.remove(p_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->remove_terrain(p_terrain_set, p_index); } - notify_property_list_changed(); + property_list_changed_notify(); terrains_cache_dirty = true; emit_changed(); } @@ -966,11 +972,11 @@ void LayeredTileSet::add_navigation_layer(int p_index) { ERR_FAIL_INDEX(p_index, navigation_layers.size() + 1); navigation_layers.insert(p_index, NavigationLayer()); - for (KeyValue> source : sources) { - source.value->add_navigation_layer(p_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->add_navigation_layer(p_index); } - notify_property_list_changed(); + property_list_changed_notify(); emit_changed(); } @@ -978,21 +984,21 @@ void LayeredTileSet::move_navigation_layer(int p_from_index, int p_to_pos) { ERR_FAIL_INDEX(p_from_index, navigation_layers.size()); ERR_FAIL_INDEX(p_to_pos, navigation_layers.size() + 1); navigation_layers.insert(p_to_pos, navigation_layers[p_from_index]); - navigation_layers.remove_at(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); - for (KeyValue> source : sources) { - source.value->move_navigation_layer(p_from_index, p_to_pos); + navigation_layers.remove(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->move_navigation_layer(p_from_index, p_to_pos); } - notify_property_list_changed(); + property_list_changed_notify(); emit_changed(); } void LayeredTileSet::remove_navigation_layer(int p_index) { ERR_FAIL_INDEX(p_index, navigation_layers.size()); - navigation_layers.remove_at(p_index); - for (KeyValue> source : sources) { - source.value->remove_navigation_layer(p_index); + navigation_layers.remove(p_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->remove_navigation_layer(p_index); } - notify_property_list_changed(); + property_list_changed_notify(); emit_changed(); } @@ -1041,11 +1047,11 @@ void LayeredTileSet::add_custom_data_layer(int p_index) { ERR_FAIL_INDEX(p_index, custom_data_layers.size() + 1); custom_data_layers.insert(p_index, CustomDataLayer()); - for (KeyValue> source : sources) { - source.value->add_custom_data_layer(p_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->add_custom_data_layer(p_index); } - notify_property_list_changed(); + property_list_changed_notify(); emit_changed(); } @@ -1053,32 +1059,34 @@ void LayeredTileSet::move_custom_data_layer(int p_from_index, int p_to_pos) { ERR_FAIL_INDEX(p_from_index, custom_data_layers.size()); ERR_FAIL_INDEX(p_to_pos, custom_data_layers.size() + 1); custom_data_layers.insert(p_to_pos, custom_data_layers[p_from_index]); - custom_data_layers.remove_at(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); - for (KeyValue> source : sources) { - source.value->move_custom_data_layer(p_from_index, p_to_pos); + custom_data_layers.remove(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->move_custom_data_layer(p_from_index, p_to_pos); } - notify_property_list_changed(); + property_list_changed_notify(); emit_changed(); } void LayeredTileSet::remove_custom_data_layer(int p_index) { ERR_FAIL_INDEX(p_index, custom_data_layers.size()); - custom_data_layers.remove_at(p_index); + custom_data_layers.remove(p_index); String to_erase; - for (KeyValue &E : custom_data_layers_by_name) { - if (E.value == p_index) { - to_erase = E.key; - } else if (E.value > p_index) { - E.value--; + + for (HashMap::Element *E = custom_data_layers_by_name.front(); E; E = E->next) { + if (E->value() == p_index) { + to_erase = E->key(); + } else if (E->value() > p_index) { + E->value()--; } } custom_data_layers_by_name.erase(to_erase); - for (KeyValue> source : sources) { - source.value->remove_custom_data_layer(p_index); + for (HashMap>::Element *source = sources.front(); source; source = source->next) { + source->value()->remove_custom_data_layer(p_index); } - notify_property_list_changed(); + + property_list_changed_notify(); emit_changed(); } @@ -1094,7 +1102,7 @@ void LayeredTileSet::set_custom_data_layer_name(int p_layer_id, String p_value) ERR_FAIL_INDEX(p_layer_id, custom_data_layers.size()); // Exit if another property has the same name. - if (!p_value.is_empty()) { + if (!p_value.empty()) { for (int other_layer_id = 0; other_layer_id < get_custom_data_layers_count(); other_layer_id++) { if (other_layer_id != p_layer_id && get_custom_data_layer_name(other_layer_id) == p_value) { ERR_FAIL_MSG(vformat("There is already a custom property named %s", p_value)); @@ -1102,7 +1110,7 @@ void LayeredTileSet::set_custom_data_layer_name(int p_layer_id, String p_value) } } - if (p_value.is_empty() && custom_data_layers_by_name.has(p_value)) { + if (p_value.empty() && custom_data_layers_by_name.has(p_value)) { custom_data_layers_by_name.erase(p_value); } else { custom_data_layers_by_name[p_value] = p_layer_id; @@ -1121,8 +1129,8 @@ void LayeredTileSet::set_custom_data_layer_type(int p_layer_id, Variant::Type p_ ERR_FAIL_INDEX(p_layer_id, custom_data_layers.size()); custom_data_layers.write[p_layer_id].type = p_value; - for (KeyValue> &E_source : sources) { - E_source.value->notify_tile_data_properties_should_change(); + for (HashMap>::Element *E_source = sources.front(); E_source; E_source = E_source->next) { + E_source->value()->notify_tile_data_properties_should_change(); } emit_changed(); @@ -1383,7 +1391,7 @@ void LayeredTileSet::clear_tile_proxies() { int LayeredTileSet::add_pattern(Ref p_pattern, int p_index) { ERR_FAIL_COND_V(!p_pattern.is_valid(), -1); - ERR_FAIL_COND_V_MSG(p_pattern->is_empty(), -1, "Cannot add an empty pattern to the LayeredTileSet."); + ERR_FAIL_COND_V_MSG(p_pattern->empty(), -1, "Cannot add an empty pattern to the LayeredTileSet."); for (const Ref &pattern : patterns) { ERR_FAIL_COND_V_MSG(pattern == p_pattern, -1, "LayeredTileSet has already this pattern."); } @@ -1403,7 +1411,7 @@ Ref LayeredTileSet::get_pattern(int p_index) { void LayeredTileSet::remove_pattern(int p_index) { ERR_FAIL_INDEX(p_index, (int)patterns.size()); - patterns.remove_at(p_index); + patterns.remove(p_index); emit_changed(); } @@ -3251,7 +3259,7 @@ void LayeredTileSet::reset_state() { } compatibility_data.clear(); #endif // DISABLE_DEPRECATED - while (!source_ids.is_empty()) { + while (!source_ids.empty()) { remove_source(source_ids[0]); } @@ -4239,6 +4247,8 @@ void LayeredTileSet::_validate_property(PropertyInfo &p_property) const { } void LayeredTileSet::_bind_methods() { + ClassDB::bind_method(D_METHOD("_source_changed"), &LayeredTileSet::_source_changed); + // Sources management. ClassDB::bind_method(D_METHOD("get_next_source_id"), &LayeredTileSet::get_next_source_id); ClassDB::bind_method(D_METHOD("add_source", "source", "atlas_source_id_override"), &LayeredTileSet::add_source, DEFVAL(LayeredTileSet::INVALID_SOURCE)); @@ -4414,7 +4424,7 @@ LayeredTileSet::~LayeredTileSet() { memdelete(E.value); } #endif // DISABLE_DEPRECATED - while (!source_ids.is_empty()) { + while (!source_ids.empty()) { remove_source(source_ids[0]); } } @@ -4971,7 +4981,7 @@ void LayeredTileSetAtlasSource::create_tile(const Vector2i p_atlas_coords, const tad.alternatives[0]->set_tile_set(tile_set); tad.alternatives[0]->set_allow_transform(false); tad.alternatives[0]->connect("changed", callable_mp((Resource *)this, &LayeredTileSetAtlasSource::emit_changed)); - tad.alternatives[0]->notify_property_list_changed(); + tad.alternatives[0]->property_list_changed_notify(); tad.alternatives_ids.push_back(0); // Create and resize the tile. @@ -5115,7 +5125,7 @@ void LayeredTileSetAtlasSource::set_tile_animation_frames_count(const Vector2i p _create_coords_mapping_cache(p_atlas_coords); _queue_update_padded_texture(); - notify_property_list_changed(); + property_list_changed_notify(); emit_signal(SNAME("changed")); } @@ -5228,10 +5238,10 @@ void LayeredTileSetAtlasSource::clear_tiles_outside_texture() { } } -PackedVector2Array LayeredTileSetAtlasSource::get_tiles_to_be_removed_on_change(Ref p_texture, Vector2i p_margins, Vector2i p_separation, Vector2i p_texture_region_size) { - ERR_FAIL_COND_V(p_margins.x < 0 || p_margins.y < 0, PackedVector2Array()); - ERR_FAIL_COND_V(p_separation.x < 0 || p_separation.y < 0, PackedVector2Array()); - ERR_FAIL_COND_V(p_texture_region_size.x <= 0 || p_texture_region_size.y <= 0, PackedVector2Array()); +PoolVector2Array LayeredTileSetAtlasSource::get_tiles_to_be_removed_on_change(Ref p_texture, Vector2i p_margins, Vector2i p_separation, Vector2i p_texture_region_size) { + ERR_FAIL_COND_V(p_margins.x < 0 || p_margins.y < 0, PoolVector2Array()); + ERR_FAIL_COND_V(p_separation.x < 0 || p_separation.y < 0, PoolVector2Array()); + ERR_FAIL_COND_V(p_texture_region_size.x <= 0 || p_texture_region_size.y <= 0, PoolVector2Array()); // Compute the new atlas grid size. Size2 new_grid_size; @@ -5355,7 +5365,7 @@ int LayeredTileSetAtlasSource::create_alternative_tile(const Vector2i p_atlas_co tiles[p_atlas_coords].alternatives[new_alternative_id]->set_tile_set(tile_set); tiles[p_atlas_coords].alternatives[new_alternative_id]->set_allow_transform(true); tiles[p_atlas_coords].alternatives[new_alternative_id]->connect("changed", callable_mp((Resource *)this, &LayeredTileSetAtlasSource::emit_changed)); - tiles[p_atlas_coords].alternatives[new_alternative_id]->notify_property_list_changed(); + tiles[p_atlas_coords].alternatives[new_alternative_id]->property_list_changed_notify(); tiles[p_atlas_coords].alternatives_ids.push_back(new_alternative_id); tiles[p_atlas_coords].alternatives_ids.sort(); _compute_next_alternative_id(p_atlas_coords); @@ -5630,7 +5640,7 @@ void LayeredTileSetAtlasSource::_update_padded_texture() { padded_texture->disconnect_changed(callable_mp(this, &LayeredTileSetAtlasSource::_queue_update_padded_texture)); } - padded_texture = Ref(); + padded_texture = Ref(); if (texture.is_null()) { return; @@ -5642,7 +5652,7 @@ void LayeredTileSetAtlasSource::_update_padded_texture() { padded_texture.instantiate(); - Ref src_canvas_texture = texture; + Ref src_canvas_texture = texture; if (src_canvas_texture.is_valid()) { // Use all textures. // Diffuse @@ -5755,14 +5765,14 @@ void LayeredTileSetScenesCollectionSource::set_scene_tile_scene(int p_id, Ref scene_state = p_packed_scene->get_state(); String type; - while (scene_state.is_valid() && type.is_empty()) { + while (scene_state.is_valid() && type.empty()) { // Make sure we have a root node. Supposed to be at 0 index because find_node_by_path() does not seem to work. ERR_FAIL_COND(scene_state->get_node_count() < 1); type = scene_state->get_node_type(0); scene_state = scene_state->get_base_scene_state(); } - ERR_FAIL_COND_EDMSG(type.is_empty(), vformat("Invalid PackedScene for LayeredTileSetScenesCollectionSource: %s. Could not get the type of the root node.", p_packed_scene->get_path())); + ERR_FAIL_COND_EDMSG(type.empty(), vformat("Invalid PackedScene for LayeredTileSetScenesCollectionSource: %s. Could not get the type of the root node.", p_packed_scene->get_path())); bool extends_correct_class = ClassDB::is_parent_class(type, "CanvasItem"); ERR_FAIL_COND_EDMSG(!extends_correct_class, vformat("Invalid PackedScene for LayeredTileSetScenesCollectionSource: %s. Root node should extend CanvasItem. Found %s instead.", p_packed_scene->get_path(), type)); @@ -5906,7 +5916,7 @@ void TileData::notify_tile_data_properties_should_change() { } } - notify_property_list_changed(); + property_list_changed_notify(); emit_signal(SNAME("changed")); } @@ -5922,12 +5932,12 @@ void TileData::move_occlusion_layer(int p_from_index, int p_to_pos) { ERR_FAIL_INDEX(p_from_index, occluders.size()); ERR_FAIL_INDEX(p_to_pos, occluders.size() + 1); occluders.insert(p_to_pos, occluders[p_from_index]); - occluders.remove_at(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); + occluders.remove(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); } void TileData::remove_occlusion_layer(int p_index) { ERR_FAIL_INDEX(p_index, occluders.size()); - occluders.remove_at(p_index); + occluders.remove(p_index); } void TileData::add_physics_layer(int p_to_pos) { @@ -5942,12 +5952,12 @@ void TileData::move_physics_layer(int p_from_index, int p_to_pos) { ERR_FAIL_INDEX(p_from_index, physics.size()); ERR_FAIL_INDEX(p_to_pos, physics.size() + 1); physics.insert(p_to_pos, physics[p_from_index]); - physics.remove_at(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); + physics.remove(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); } void TileData::remove_physics_layer(int p_index) { ERR_FAIL_INDEX(p_index, physics.size()); - physics.remove_at(p_index); + physics.remove(p_index); } void TileData::add_terrain_set(int p_to_pos) { @@ -6037,12 +6047,12 @@ void TileData::move_navigation_layer(int p_from_index, int p_to_pos) { ERR_FAIL_INDEX(p_from_index, navigation.size()); ERR_FAIL_INDEX(p_to_pos, navigation.size() + 1); navigation.insert(p_to_pos, navigation[p_from_index]); - navigation.remove_at(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); + navigation.remove(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); } void TileData::remove_navigation_layer(int p_index) { ERR_FAIL_INDEX(p_index, navigation.size()); - navigation.remove_at(p_index); + navigation.remove(p_index); } void TileData::add_custom_data_layer(int p_to_pos) { @@ -6057,12 +6067,12 @@ void TileData::move_custom_data_layer(int p_from_index, int p_to_pos) { ERR_FAIL_INDEX(p_from_index, custom_data.size()); ERR_FAIL_INDEX(p_to_pos, custom_data.size() + 1); custom_data.insert(p_to_pos, custom_data[p_from_index]); - custom_data.remove_at(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); + custom_data.remove(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index); } void TileData::remove_custom_data_layer(int p_index) { ERR_FAIL_INDEX(p_index, custom_data.size()); - custom_data.remove_at(p_index); + custom_data.remove(p_index); } void TileData::set_allow_transform(bool p_allow_transform) { @@ -6237,7 +6247,7 @@ void TileData::set_collision_polygons_count(int p_layer_id, int p_polygons_count return; } physics.write[p_layer_id].polygons.resize(p_polygons_count); - notify_property_list_changed(); + property_list_changed_notify(); emit_signal(SNAME("changed")); } @@ -6255,7 +6265,7 @@ void TileData::add_collision_polygon(int p_layer_id) { void TileData::remove_collision_polygon(int p_layer_id, int p_polygon_index) { ERR_FAIL_INDEX(p_layer_id, physics.size()); ERR_FAIL_INDEX(p_polygon_index, physics[p_layer_id].polygons.size()); - physics.write[p_layer_id].polygons.remove_at(p_polygon_index); + physics.write[p_layer_id].polygons.remove(p_polygon_index); emit_signal(SNAME("changed")); } @@ -6266,12 +6276,12 @@ void TileData::set_collision_polygon_points(int p_layer_id, int p_polygon_index, TileData::PhysicsLayerTileData::PolygonShapeTileData &polygon_shape_tile_data = physics.write[p_layer_id].polygons.write[p_polygon_index]; - if (p_polygon.is_empty()) { + if (p_polygon.empty()) { polygon_shape_tile_data.shapes.clear(); } else { // Decompose into convex shapes. Vector> decomp = Geometry2D::decompose_polygon_in_convex(p_polygon); - ERR_FAIL_COND_MSG(decomp.is_empty(), "Could not decompose the polygon into convex shapes."); + ERR_FAIL_COND_MSG(decomp.empty(), "Could not decompose the polygon into convex shapes."); polygon_shape_tile_data.shapes.resize(decomp.size()); for (int i = 0; i < decomp.size(); i++) { @@ -6370,7 +6380,7 @@ void TileData::set_terrain_set(int p_terrain_set) { } } terrain_set = p_terrain_set; - notify_property_list_changed(); + property_list_changed_notify(); emit_signal(SNAME("changed")); } @@ -6455,11 +6465,11 @@ Ref TileData::get_navigation_polygon(int p_layer_id, bool p_f Ref transformed_polygon; transformed_polygon.instantiate(); - PackedVector2Array new_points = get_transformed_vertices(layer_tile_data.navigation_polygon->get_vertices(), p_flip_h, p_flip_v, p_transpose); + PoolVector2Array new_points = get_transformed_vertices(layer_tile_data.navigation_polygon->get_vertices(), p_flip_h, p_flip_v, p_transpose); transformed_polygon->set_vertices(new_points); for (int i = 0; i < layer_tile_data.navigation_polygon->get_outline_count(); i++) { - PackedVector2Array new_outline = get_transformed_vertices(layer_tile_data.navigation_polygon->get_outline(i), p_flip_h, p_flip_v, p_transpose); + PoolVector2Array new_outline = get_transformed_vertices(layer_tile_data.navigation_polygon->get_outline(i), p_flip_h, p_flip_v, p_transpose); transformed_polygon->add_outline(new_outline); } @@ -6513,11 +6523,11 @@ Variant TileData::get_custom_data_by_layer_id(int p_layer_id) const { return custom_data[p_layer_id]; } -PackedVector2Array TileData::get_transformed_vertices(const PackedVector2Array &p_vertices, bool p_flip_h, bool p_flip_v, bool p_transpose) { +PoolVector2Array TileData::get_transformed_vertices(const PoolVector2Array &p_vertices, bool p_flip_h, bool p_flip_v, bool p_transpose) { const Vector2 *r = p_vertices.ptr(); int size = p_vertices.size(); - PackedVector2Array new_points; + PoolVector2Array new_points; new_points.resize(size); Vector2 *w = new_points.ptrw(); @@ -6786,7 +6796,7 @@ void TileData::_get_property_list(List *p_list) const { for (int j = 0; j < physics[i].polygons.size(); j++) { // physics_layer_%d/points property_info = PropertyInfo(Variant::ARRAY, vformat("physics_layer_%d/polygon_%d/%s", i, j, PNAME("points")), PROPERTY_HINT_ARRAY_TYPE, "Vector2", PROPERTY_USAGE_DEFAULT); - if (physics[i].polygons[j].polygon.is_empty()) { + if (physics[i].polygons[j].polygon.empty()) { property_info.usage ^= PROPERTY_USAGE_STORAGE; } p_list->push_back(property_info); diff --git a/modules/layered_tile_map/layered_tile_set.h b/modules/layered_tile_map/layered_tile_set.h index 57e597cc9..5327654c0 100644 --- a/modules/layered_tile_map/layered_tile_set.h +++ b/modules/layered_tile_map/layered_tile_set.h @@ -44,7 +44,7 @@ #include "scene/resources/navigation_2d/navigation_polygon.h" #include "scene/resources/packed_scene.h" #include "scene/resources/physics_material.h" -#include "scene/resources/shapes_2d/concave_polygon_shape_2d.h" +#include "scene/resources/shapes_2d/convex_polygon_shape_2d.h" #include "scene/resources/texture.h" #ifndef DISABLE_DEPRECATED @@ -54,7 +54,7 @@ class LayeredTileMap; class LayeredTileSetSource; class LayeredTileSetAtlasSource; -class TileData; +class LayeredTileData; // Forward-declare the plugins. class LayeredTileSetPlugin; @@ -144,7 +144,7 @@ public: Size2i get_size() const; void set_size(const Size2i &p_size); - bool is_empty() const; + bool empty() const; void clear(); }; @@ -543,7 +543,7 @@ public: Vector get_terrain_polygon(int p_terrain_set); Vector get_terrain_peering_bit_polygon(int p_terrain_set, LayeredTileSet::CellNeighbor p_bit); - void draw_terrains(CanvasItem *p_canvas_item, Transform2D p_transform, const TileData *p_tile_data); + void draw_terrains(CanvasItem *p_canvas_item, Transform2D p_transform, const LayeredTileData *p_tile_data); Vector>> generate_terrains_icons(Size2i p_size); // Resource management @@ -632,7 +632,7 @@ private: LocalVector animation_frames_durations; // Alternatives - HashMap alternatives; + HashMap alternatives; Vector alternatives_ids; int next_alternative_id = 1; }; @@ -646,8 +646,8 @@ private: Vector tiles_ids; HashMap _coords_mapping_cache; // Maps any coordinate to the including tile - TileData *_get_atlas_tile_data(Vector2i p_atlas_coords, int p_alternative_tile); - const TileData *_get_atlas_tile_data(Vector2i p_atlas_coords, int p_alternative_tile) const; + LayeredTileData *_get_atlas_tile_data(Vector2i p_atlas_coords, int p_alternative_tile); + const LayeredTileData *_get_atlas_tile_data(Vector2i p_atlas_coords, int p_alternative_tile) const; void _compute_next_alternative_id(const Vector2i p_atlas_coords); @@ -655,7 +655,7 @@ private: void _create_coords_mapping_cache(Vector2i p_atlas_coords); bool use_texture_padding = true; - Ref padded_texture; + Ref padded_texture; bool padded_texture_needs_update = false; void _queue_update_padded_texture(); Ref _create_padded_image_texture(const Ref &p_source); @@ -718,7 +718,7 @@ public: virtual Vector2i get_tile_id(int p_index) const; bool has_room_for_tile(Vector2i p_atlas_coords, Vector2i p_size, int p_animation_columns, Vector2i p_animation_separation, int p_frames_count, Vector2i p_ignored_tile = INVALID_ATLAS_COORDS) const; - PackedVector2Array get_tiles_to_be_removed_on_change(Ref p_texture, Vector2i p_margins, Vector2i p_separation, Vector2i p_texture_region_size); + PoolVector2Array get_tiles_to_be_removed_on_change(Ref p_texture, Vector2i p_margins, Vector2i p_separation, Vector2i p_texture_region_size); Vector2i get_tile_at_coords(Vector2i p_atlas_coords) const; bool has_tiles_outside_texture() const; @@ -977,7 +977,7 @@ public: Variant get_custom_data_by_layer_id(int p_layer_id) const; // Polygons. - static PackedVector2Array get_transformed_vertices(const PackedVector2Array &p_vertices, bool p_flip_h, bool p_flip_v, bool p_transpose); + static PoolVector2Array get_transformed_vertices(const PoolVector2Array &p_vertices, bool p_flip_h, bool p_flip_v, bool p_transpose); }; VARIANT_ENUM_CAST(LayeredTileSet::CellNeighbor);