You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-19 14:31:59 +00:00
Use range iterators for RBSet in most cases
This commit is contained in:
@@ -897,8 +897,8 @@ void TileDataDefaultEditor::forward_draw_over_atlas(TileAtlasView *p_tile_atlas_
|
||||
}
|
||||
}
|
||||
|
||||
for (RBSet<TileMapCell>::Element *E = edited.front(); E; E = E->next()) {
|
||||
Vector2i coords = E->get().get_atlas_coords();
|
||||
for (const TileMapCell &E : edited) {
|
||||
Vector2i coords = E.get_atlas_coords();
|
||||
p_canvas_item->draw_rect(p_tile_set_atlas_source->get_tile_texture_region(coords), selection_color, false);
|
||||
}
|
||||
p_canvas_item->draw_set_transform_matrix(Transform2D());
|
||||
@@ -1755,8 +1755,8 @@ void TileDataTerrainsEditor::forward_draw_over_atlas(TileAtlasView *p_tile_atlas
|
||||
}
|
||||
}
|
||||
|
||||
for (RBSet<TileMapCell>::Element *E = edited.front(); E; E = E->next()) {
|
||||
Vector2i coords = E->get().get_atlas_coords();
|
||||
for (const TileMapCell &E : edited) {
|
||||
Vector2i coords = E.get_atlas_coords();
|
||||
p_canvas_item->draw_rect(p_tile_set_atlas_source->get_tile_texture_region(coords), selection_color, false);
|
||||
}
|
||||
p_canvas_item->draw_set_transform_matrix(Transform2D());
|
||||
@@ -1800,8 +1800,8 @@ void TileDataTerrainsEditor::forward_draw_over_atlas(TileAtlasView *p_tile_atlas
|
||||
|
||||
p_canvas_item->draw_set_transform_matrix(p_transform);
|
||||
|
||||
for (RBSet<TileMapCell>::Element *E = edited.front(); E; E = E->next()) {
|
||||
Vector2i coords = E->get().get_atlas_coords();
|
||||
for (const TileMapCell &E : edited) {
|
||||
Vector2i coords = E.get_atlas_coords();
|
||||
|
||||
Rect2i texture_region = p_tile_set_atlas_source->get_tile_texture_region(coords);
|
||||
Vector2i position = texture_region.get_center() + p_tile_set_atlas_source->get_tile_effective_texture_offset(coords, 0);
|
||||
@@ -2133,15 +2133,15 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
|
||||
}
|
||||
}
|
||||
undo_redo->create_action(TTR("Painting Terrain Set"));
|
||||
for (RBSet<TileMapCell>::Element *E = edited.front(); E; E = E->next()) {
|
||||
Vector2i coords = E->get().get_atlas_coords();
|
||||
for (const TileMapCell &E : edited) {
|
||||
Vector2i coords = E.get_atlas_coords();
|
||||
TileData *tile_data = p_tile_set_atlas_source->get_tile_data(coords, 0);
|
||||
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain_set", coords.x, coords.y, E->get().alternative_tile), tile_data->get_terrain_set());
|
||||
undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain_set", coords.x, coords.y, E->get().alternative_tile), drag_painted_value);
|
||||
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain_set", coords.x, coords.y, E.alternative_tile), tile_data->get_terrain_set());
|
||||
undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrain_set", coords.x, coords.y, E.alternative_tile), drag_painted_value);
|
||||
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
|
||||
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
|
||||
if (tile_data->is_valid_peering_bit_terrain(bit)) {
|
||||
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E->get().alternative_tile), tile_data->get_peering_bit_terrain(bit));
|
||||
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.alternative_tile), tile_data->get_peering_bit_terrain(bit));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2220,8 +2220,8 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
|
||||
mouse_pos_rect_polygon.push_back(Vector2(drag_start_pos.x, mb->get_position().y));
|
||||
|
||||
undo_redo->create_action(TTR("Painting Terrain"));
|
||||
for (RBSet<TileMapCell>::Element *E = edited.front(); E; E = E->next()) {
|
||||
Vector2i coords = E->get().get_atlas_coords();
|
||||
for (const TileMapCell &E : edited) {
|
||||
Vector2i coords = E.get_atlas_coords();
|
||||
TileData *tile_data = p_tile_set_atlas_source->get_tile_data(coords, 0);
|
||||
|
||||
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
|
||||
@@ -2236,8 +2236,8 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
|
||||
}
|
||||
if (!Geometry2D::intersect_polygons(polygon, mouse_pos_rect_polygon).is_empty()) {
|
||||
// Draw bit.
|
||||
undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E->get().alternative_tile), terrain);
|
||||
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E->get().alternative_tile), tile_data->get_peering_bit_terrain(bit));
|
||||
undo_redo->add_do_property(p_tile_set_atlas_source, vformat("%d:%d/%d/terrains_peering_bit/" + String(TileSet::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(TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[i]), coords.x, coords.y, E.alternative_tile), tile_data->get_peering_bit_terrain(bit));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -501,8 +501,8 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
|
||||
if (!tile_map_selection.is_empty()) {
|
||||
tile_map_clipboard.instantiate();
|
||||
TypedArray<Vector2i> coords_array;
|
||||
for (RBSet<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
|
||||
coords_array.push_back(E->get());
|
||||
for (const Vector2i &E : tile_map_selection) {
|
||||
coords_array.push_back(E);
|
||||
}
|
||||
tile_map_clipboard = tile_map->get_pattern(tile_map_layer, coords_array);
|
||||
}
|
||||
@@ -511,9 +511,9 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
|
||||
// Delete selected tiles.
|
||||
if (!tile_map_selection.is_empty()) {
|
||||
undo_redo->create_action(TTR("Delete tiles"));
|
||||
for (RBSet<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
|
||||
undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E->get(), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
|
||||
undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E->get(), tile_map->get_cell_source_id(tile_map_layer, E->get()), tile_map->get_cell_atlas_coords(tile_map_layer, E->get()), tile_map->get_cell_alternative_tile(tile_map_layer, E->get()));
|
||||
for (const Vector2i &E : tile_map_selection) {
|
||||
undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E, TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
|
||||
undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E, tile_map->get_cell_source_id(tile_map_layer, E), tile_map->get_cell_atlas_coords(tile_map_layer, E), tile_map->get_cell_alternative_tile(tile_map_layer, E));
|
||||
}
|
||||
undo_redo->add_undo_method(this, "_set_tile_map_selection", _get_tile_map_selection());
|
||||
tile_map_selection.clear();
|
||||
@@ -542,9 +542,9 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
|
||||
// Delete selected tiles.
|
||||
if (!tile_map_selection.is_empty()) {
|
||||
undo_redo->create_action(TTR("Delete tiles"));
|
||||
for (RBSet<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
|
||||
undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E->get(), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
|
||||
undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E->get(), tile_map->get_cell_source_id(tile_map_layer, E->get()), tile_map->get_cell_atlas_coords(tile_map_layer, E->get()), tile_map->get_cell_alternative_tile(tile_map_layer, E->get()));
|
||||
for (const Vector2i &E : tile_map_selection) {
|
||||
undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E, TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
|
||||
undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E, tile_map->get_cell_source_id(tile_map_layer, E), tile_map->get_cell_atlas_coords(tile_map_layer, E), tile_map->get_cell_alternative_tile(tile_map_layer, E));
|
||||
}
|
||||
undo_redo->add_undo_method(this, "_set_tile_map_selection", _get_tile_map_selection());
|
||||
tile_map_selection.clear();
|
||||
@@ -628,8 +628,8 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
|
||||
_update_selection_pattern_from_tilemap_selection(); // Make sure the pattern is up to date before moving.
|
||||
drag_type = DRAG_TYPE_MOVE;
|
||||
drag_modified.clear();
|
||||
for (RBSet<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
|
||||
Vector2i coords = E->get();
|
||||
for (const Vector2i &E : tile_map_selection) {
|
||||
Vector2i coords = E;
|
||||
drag_modified.insert(coords, tile_map->get_cell(tile_map_layer, coords));
|
||||
tile_map->set_cell(tile_map_layer, coords, TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
|
||||
}
|
||||
@@ -785,8 +785,8 @@ void TileMapEditorTilesPlugin::forward_canvas_draw_over_viewport(Control *p_over
|
||||
if (!tile_map_selection.is_empty()) {
|
||||
top_left = tile_map_selection.front()->get();
|
||||
}
|
||||
for (RBSet<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
|
||||
top_left = top_left.min(E->get());
|
||||
for (const Vector2i &E : tile_map_selection) {
|
||||
top_left = top_left.min(E);
|
||||
}
|
||||
Vector2i offset = drag_start_mouse_pos - tile_map->map_to_world(top_left);
|
||||
offset = tile_map->world_to_map(drag_last_mouse_pos - offset) - tile_map->world_to_map(drag_start_mouse_pos - offset);
|
||||
@@ -1278,8 +1278,8 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
|
||||
if (!tile_map_selection.is_empty()) {
|
||||
top_left = tile_map_selection.front()->get();
|
||||
}
|
||||
for (RBSet<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
|
||||
top_left = top_left.min(E->get());
|
||||
for (const Vector2i &E : tile_map_selection) {
|
||||
top_left = top_left.min(E);
|
||||
}
|
||||
|
||||
// Get the offset from the mouse.
|
||||
@@ -1534,8 +1534,8 @@ void TileMapEditorTilesPlugin::_update_selection_pattern_from_tilemap_selection(
|
||||
selection_pattern.instantiate();
|
||||
|
||||
TypedArray<Vector2i> coords_array;
|
||||
for (RBSet<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
|
||||
coords_array.push_back(E->get());
|
||||
for (const Vector2i &E : tile_map_selection) {
|
||||
coords_array.push_back(E);
|
||||
}
|
||||
selection_pattern = tile_map->get_pattern(tile_map_layer, coords_array);
|
||||
}
|
||||
@@ -1559,8 +1559,8 @@ void TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_tiles_sele
|
||||
|
||||
// Group per source.
|
||||
HashMap<int, List<const TileMapCell *>> per_source;
|
||||
for (RBSet<TileMapCell>::Element *E = tile_set_selection.front(); E; E = E->next()) {
|
||||
per_source[E->get().source_id].push_back(&(E->get()));
|
||||
for (const TileMapCell &E : tile_set_selection) {
|
||||
per_source[E.source_id].push_back(&(E));
|
||||
}
|
||||
|
||||
int vertical_offset = 0;
|
||||
@@ -1680,14 +1680,14 @@ void TileMapEditorTilesPlugin::_tile_atlas_control_draw() {
|
||||
// Draw the selection.
|
||||
Color grid_color = EditorSettings::get_singleton()->get("editors/tiles_editor/grid_color");
|
||||
Color selection_color = Color().from_hsv(Math::fposmod(grid_color.get_h() + 0.5, 1.0), grid_color.get_s(), grid_color.get_v(), 1.0);
|
||||
for (RBSet<TileMapCell>::Element *E = tile_set_selection.front(); E; E = E->next()) {
|
||||
if (E->get().source_id == source_id && E->get().alternative_tile == 0) {
|
||||
for (int frame = 0; frame < atlas->get_tile_animation_frames_count(E->get().get_atlas_coords()); frame++) {
|
||||
for (const TileMapCell &E : tile_set_selection) {
|
||||
if (E.source_id == source_id && E.alternative_tile == 0) {
|
||||
for (int frame = 0; frame < atlas->get_tile_animation_frames_count(E.get_atlas_coords()); frame++) {
|
||||
Color color = selection_color;
|
||||
if (frame > 0) {
|
||||
color.a *= 0.3;
|
||||
}
|
||||
tile_atlas_control->draw_rect(atlas->get_tile_texture_region(E->get().get_atlas_coords(), frame), color, false);
|
||||
tile_atlas_control->draw_rect(atlas->get_tile_texture_region(E.get_atlas_coords(), frame), color, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1721,8 +1721,8 @@ void TileMapEditorTilesPlugin::_tile_atlas_control_draw() {
|
||||
}
|
||||
}
|
||||
Color selection_rect_color = selection_color.lightened(0.2);
|
||||
for (RBSet<Vector2i>::Element *E = to_draw.front(); E; E = E->next()) {
|
||||
tile_atlas_control->draw_rect(atlas->get_tile_texture_region(E->get()), selection_rect_color, false);
|
||||
for (const Vector2i &E : to_draw) {
|
||||
tile_atlas_control->draw_rect(atlas->get_tile_texture_region(E), selection_rect_color, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1868,9 +1868,9 @@ void TileMapEditorTilesPlugin::_tile_alternatives_control_draw() {
|
||||
}
|
||||
|
||||
// Draw the selection.
|
||||
for (RBSet<TileMapCell>::Element *E = tile_set_selection.front(); E; E = E->next()) {
|
||||
if (E->get().source_id == source_id && E->get().get_atlas_coords() != TileSetSource::INVALID_ATLAS_COORDS && E->get().alternative_tile > 0) {
|
||||
Rect2i rect = tile_atlas_view->get_alternative_tile_rect(E->get().get_atlas_coords(), E->get().alternative_tile);
|
||||
for (const TileMapCell &E : tile_set_selection) {
|
||||
if (E.source_id == source_id && E.get_atlas_coords() != TileSetSource::INVALID_ATLAS_COORDS && E.alternative_tile > 0) {
|
||||
Rect2i rect = tile_atlas_view->get_alternative_tile_rect(E.get_atlas_coords(), E.alternative_tile);
|
||||
if (rect != Rect2i()) {
|
||||
alternative_tiles_control->draw_rect(rect, Color(0.2, 0.2, 1.0), false);
|
||||
}
|
||||
@@ -1972,8 +1972,8 @@ void TileMapEditorTilesPlugin::_set_tile_map_selection(const TypedArray<Vector2i
|
||||
|
||||
TypedArray<Vector2i> TileMapEditorTilesPlugin::_get_tile_map_selection() const {
|
||||
TypedArray<Vector2i> output;
|
||||
for (RBSet<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
|
||||
output.push_back(E->get());
|
||||
for (const Vector2i &E : tile_map_selection) {
|
||||
output.push_back(E);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
@@ -2341,8 +2341,8 @@ HashMap<Vector2i, TileMapCell> TileMapEditorTerrainsPlugin::_draw_terrains(const
|
||||
TileSet::TerrainsPattern terrains_pattern = E_to_paint.value;
|
||||
|
||||
RBSet<TileMap::TerrainConstraint> cell_constraints = tile_map->get_terrain_constraints_from_added_tile(coords, p_terrain_set, terrains_pattern);
|
||||
for (RBSet<TileMap::TerrainConstraint>::Element *E = cell_constraints.front(); E; E = E->next()) {
|
||||
added_tiles_constraints_set.insert(E->get());
|
||||
for (const TileMap::TerrainConstraint &E : cell_constraints) {
|
||||
added_tiles_constraints_set.insert(E);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2377,18 +2377,18 @@ HashMap<Vector2i, TileMapCell> TileMapEditorTerrainsPlugin::_draw_terrains(const
|
||||
|
||||
// Filter the sources to make sure they are in the potential_to_replace.
|
||||
RBMap<TileMap::TerrainConstraint, RBSet<Vector2i>> per_constraint_tiles;
|
||||
for (RBSet<TileMap::TerrainConstraint>::Element *E = removed_cells_constraints_set.front(); E; E = E->next()) {
|
||||
HashMap<Vector2i, TileSet::CellNeighbor> sources_of_constraint = E->get().get_overlapping_coords_and_peering_bits();
|
||||
for (const TileMap::TerrainConstraint &E : removed_cells_constraints_set) {
|
||||
HashMap<Vector2i, TileSet::CellNeighbor> sources_of_constraint = E.get_overlapping_coords_and_peering_bits();
|
||||
for (const KeyValue<Vector2i, TileSet::CellNeighbor> &E_source_tile_of_constraint : sources_of_constraint) {
|
||||
if (potential_to_replace.has(E_source_tile_of_constraint.key)) {
|
||||
per_constraint_tiles[E->get()].insert(E_source_tile_of_constraint.key);
|
||||
per_constraint_tiles[E].insert(E_source_tile_of_constraint.key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
to_replace_modified = false;
|
||||
for (RBSet<TileMap::TerrainConstraint>::Element *E = added_tiles_constraints_set.front(); E; E = E->next()) {
|
||||
TileMap::TerrainConstraint c = E->get();
|
||||
for (const TileMap::TerrainConstraint &E : added_tiles_constraints_set) {
|
||||
TileMap::TerrainConstraint c = E;
|
||||
// Check if we have a conflict in constraints.
|
||||
if (removed_cells_constraints_set.has(c) && removed_cells_constraints_set.find(c)->get().get_terrain() != c.get_terrain()) {
|
||||
// If we do, we search for a neighbor to remove.
|
||||
@@ -2409,8 +2409,8 @@ HashMap<Vector2i, TileMapCell> TileMapEditorTerrainsPlugin::_draw_terrains(const
|
||||
|
||||
// Combine all constraints together.
|
||||
RBSet<TileMap::TerrainConstraint> constraints = removed_cells_constraints_set;
|
||||
for (RBSet<TileMap::TerrainConstraint>::Element *E = added_tiles_constraints_set.front(); E; E = E->next()) {
|
||||
constraints.insert(E->get());
|
||||
for (const TileMap::TerrainConstraint &E : added_tiles_constraints_set) {
|
||||
constraints.insert(E);
|
||||
}
|
||||
|
||||
// Remove the central tiles from the ones to replace.
|
||||
@@ -3194,22 +3194,22 @@ void TileMapEditorTerrainsPlugin::_update_tiles_list() {
|
||||
// Sort the items in a map by the number of corresponding terrains.
|
||||
RBMap<int, RBSet<TileSet::TerrainsPattern>> sorted;
|
||||
|
||||
for (RBSet<TileSet::TerrainsPattern>::Element *E = per_terrain_terrains_patterns[selected_terrain_set][selected_terrain_id].front(); E; E = E->next()) {
|
||||
for (const TileSet::TerrainsPattern &E : per_terrain_terrains_patterns[selected_terrain_set][selected_terrain_id]) {
|
||||
// Count the number of matching sides/terrains.
|
||||
int count = 0;
|
||||
|
||||
for (int i = 0; i < TileSet::CELL_NEIGHBOR_MAX; i++) {
|
||||
TileSet::CellNeighbor bit = TileSet::CellNeighbor(i);
|
||||
if (tile_set->is_valid_peering_bit_terrain(selected_terrain_set, bit) && E->get().get_terrain(bit) == selected_terrain_id) {
|
||||
if (tile_set->is_valid_peering_bit_terrain(selected_terrain_set, bit) && E.get_terrain(bit) == selected_terrain_id) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
sorted[count].insert(E->get());
|
||||
sorted[count].insert(E);
|
||||
}
|
||||
|
||||
for (RBMap<int, RBSet<TileSet::TerrainsPattern>>::Element *E_set = sorted.back(); E_set; E_set = E_set->prev()) {
|
||||
for (RBSet<TileSet::TerrainsPattern>::Element *E = E_set->get().front(); E; E = E->next()) {
|
||||
TileSet::TerrainsPattern terrains_pattern = E->get();
|
||||
for (const TileSet::TerrainsPattern &E : E_set->get()) {
|
||||
TileSet::TerrainsPattern terrains_pattern = E;
|
||||
|
||||
// Get the icon.
|
||||
Ref<Texture2D> icon;
|
||||
|
||||
@@ -270,9 +270,9 @@ bool TileSetAtlasSourceEditor::AtlasTileProxyObject::_set(const StringName &p_na
|
||||
|
||||
// Other properties.
|
||||
bool any_valid = false;
|
||||
for (RBSet<TileSelection>::Element *E = tiles.front(); E; E = E->next()) {
|
||||
const Vector2i &coords = E->get().tile;
|
||||
const int &alternative = E->get().alternative;
|
||||
for (const TileSelection &E : tiles) {
|
||||
const Vector2i &coords = E.tile;
|
||||
const int &alternative = E.alternative;
|
||||
|
||||
bool valid = false;
|
||||
TileData *tile_data = tile_set_atlas_source->get_tile_data(coords, alternative);
|
||||
@@ -354,11 +354,11 @@ bool TileSetAtlasSourceEditor::AtlasTileProxyObject::_get(const StringName &p_na
|
||||
}
|
||||
}
|
||||
|
||||
for (RBSet<TileSelection>::Element *E = tiles.front(); E; E = E->next()) {
|
||||
for (const TileSelection &E : tiles) {
|
||||
// Return the first tile with a property matching the name.
|
||||
// Note: It's a little bit annoying, but the behavior is the same the one in MultiNodeEdit.
|
||||
const Vector2i &coords = E->get().tile;
|
||||
const int &alternative = E->get().alternative;
|
||||
const Vector2i &coords = E.tile;
|
||||
const int &alternative = E.alternative;
|
||||
|
||||
TileData *tile_data = tile_set_atlas_source->get_tile_data(coords, alternative);
|
||||
ERR_FAIL_COND_V(!tile_data, false);
|
||||
@@ -429,9 +429,9 @@ void TileSetAtlasSourceEditor::AtlasTileProxyObject::_get_property_list(List<Pro
|
||||
RBMap<PropertyId, PLData> usage;
|
||||
|
||||
List<PLData *> data_list;
|
||||
for (RBSet<TileSelection>::Element *E = tiles.front(); E; E = E->next()) {
|
||||
const Vector2i &coords = E->get().tile;
|
||||
const int &alternative = E->get().alternative;
|
||||
for (const TileSelection &E : tiles) {
|
||||
const Vector2i &coords = E.tile;
|
||||
const int &alternative = E.alternative;
|
||||
|
||||
TileData *tile_data = tile_set_atlas_source->get_tile_data(coords, alternative);
|
||||
ERR_FAIL_COND(!tile_data);
|
||||
@@ -476,15 +476,15 @@ void TileSetAtlasSourceEditor::AtlasTileProxyObject::_get_property_list(List<Pro
|
||||
void TileSetAtlasSourceEditor::AtlasTileProxyObject::edit(TileSetAtlasSource *p_tile_set_atlas_source, RBSet<TileSelection> p_tiles) {
|
||||
ERR_FAIL_COND(!p_tile_set_atlas_source);
|
||||
ERR_FAIL_COND(p_tiles.is_empty());
|
||||
for (RBSet<TileSelection>::Element *E = p_tiles.front(); E; E = E->next()) {
|
||||
ERR_FAIL_COND(E->get().tile == TileSetSource::INVALID_ATLAS_COORDS);
|
||||
ERR_FAIL_COND(E->get().alternative < 0);
|
||||
for (const TileSelection &E : p_tiles) {
|
||||
ERR_FAIL_COND(E.tile == TileSetSource::INVALID_ATLAS_COORDS);
|
||||
ERR_FAIL_COND(E.alternative < 0);
|
||||
}
|
||||
|
||||
// Disconnect to changes.
|
||||
for (RBSet<TileSelection>::Element *E = tiles.front(); E; E = E->next()) {
|
||||
const Vector2i &coords = E->get().tile;
|
||||
const int &alternative = E->get().alternative;
|
||||
for (const TileSelection &E : tiles) {
|
||||
const Vector2i &coords = E.tile;
|
||||
const int &alternative = E.alternative;
|
||||
|
||||
if (tile_set_atlas_source && tile_set_atlas_source->has_tile(coords) && tile_set_atlas_source->has_alternative_tile(coords, alternative)) {
|
||||
TileData *tile_data = tile_set_atlas_source->get_tile_data(coords, alternative);
|
||||
@@ -498,9 +498,9 @@ void TileSetAtlasSourceEditor::AtlasTileProxyObject::edit(TileSetAtlasSource *p_
|
||||
tiles = RBSet<TileSelection>(p_tiles);
|
||||
|
||||
// Connect to changes.
|
||||
for (RBSet<TileSelection>::Element *E = p_tiles.front(); E; E = E->next()) {
|
||||
const Vector2i &coords = E->get().tile;
|
||||
const int &alternative = E->get().alternative;
|
||||
for (const TileSelection &E : p_tiles) {
|
||||
const Vector2i &coords = E.tile;
|
||||
const int &alternative = E.alternative;
|
||||
|
||||
if (tile_set_atlas_source->has_tile(coords) && tile_set_atlas_source->has_alternative_tile(coords, alternative)) {
|
||||
TileData *tile_data = tile_set_atlas_source->get_tile_data(coords, alternative);
|
||||
@@ -1313,9 +1313,9 @@ void TileSetAtlasSourceEditor::_end_dragging() {
|
||||
switch (drag_type) {
|
||||
case DRAG_TYPE_CREATE_TILES:
|
||||
undo_redo->create_action(TTR("Create tiles"));
|
||||
for (RBSet<Vector2i>::Element *E = drag_modified_tiles.front(); E; E = E->next()) {
|
||||
undo_redo->add_do_method(tile_set_atlas_source, "create_tile", E->get());
|
||||
undo_redo->add_undo_method(tile_set_atlas_source, "remove_tile", E->get());
|
||||
for (const Vector2i &E : drag_modified_tiles) {
|
||||
undo_redo->add_do_method(tile_set_atlas_source, "create_tile", E);
|
||||
undo_redo->add_undo_method(tile_set_atlas_source, "remove_tile", E);
|
||||
}
|
||||
undo_redo->commit_action(false);
|
||||
break;
|
||||
@@ -1330,8 +1330,8 @@ void TileSetAtlasSourceEditor::_end_dragging() {
|
||||
tile_set_atlas_source->get_property_list(&list);
|
||||
HashMap<Vector2i, List<const PropertyInfo *>> per_tile = _group_properties_per_tiles(list, tile_set_atlas_source);
|
||||
undo_redo->create_action(TTR("Remove tiles"));
|
||||
for (RBSet<Vector2i>::Element *E = drag_modified_tiles.front(); E; E = E->next()) {
|
||||
Vector2i coords = E->get();
|
||||
for (const Vector2i &E : drag_modified_tiles) {
|
||||
Vector2i coords = E;
|
||||
undo_redo->add_do_method(tile_set_atlas_source, "remove_tile", coords);
|
||||
undo_redo->add_undo_method(tile_set_atlas_source, "create_tile", coords);
|
||||
if (per_tile.has(coords)) {
|
||||
@@ -1384,8 +1384,8 @@ void TileSetAtlasSourceEditor::_end_dragging() {
|
||||
|
||||
undo_redo->create_action(TTR("Remove tiles"));
|
||||
undo_redo->add_do_method(this, "_set_selection_from_array", Array());
|
||||
for (RBSet<Vector2i>::Element *E = to_delete.front(); E; E = E->next()) {
|
||||
Vector2i coords = E->get();
|
||||
for (const Vector2i &E : to_delete) {
|
||||
Vector2i coords = E;
|
||||
undo_redo->add_do_method(tile_set_atlas_source, "remove_tile", coords);
|
||||
undo_redo->add_undo_method(tile_set_atlas_source, "create_tile", coords);
|
||||
if (per_tile.has(coords)) {
|
||||
@@ -1549,8 +1549,8 @@ void TileSetAtlasSourceEditor::_menu_option(int p_option) {
|
||||
|
||||
// Remove tiles
|
||||
RBSet<Vector2i> removed;
|
||||
for (RBSet<TileSelection>::Element *E = selection.front(); E; E = E->next()) {
|
||||
TileSelection selected = E->get();
|
||||
for (const TileSelection &E : selection) {
|
||||
TileSelection selected = E;
|
||||
if (selected.alternative == 0) {
|
||||
// Remove a tile.
|
||||
undo_redo->add_do_method(tile_set_atlas_source, "remove_tile", selected.tile);
|
||||
@@ -1569,8 +1569,8 @@ void TileSetAtlasSourceEditor::_menu_option(int p_option) {
|
||||
}
|
||||
|
||||
// Remove alternatives
|
||||
for (RBSet<TileSelection>::Element *E = selection.front(); E; E = E->next()) {
|
||||
TileSelection selected = E->get();
|
||||
for (const TileSelection &E : selection) {
|
||||
TileSelection selected = E;
|
||||
if (selected.alternative > 0 && !removed.has(selected.tile)) {
|
||||
// Remove an alternative tile.
|
||||
undo_redo->add_do_method(tile_set_atlas_source, "remove_alternative_tile", selected.tile, selected.alternative);
|
||||
@@ -1608,13 +1608,13 @@ void TileSetAtlasSourceEditor::_menu_option(int p_option) {
|
||||
case TILE_CREATE_ALTERNATIVE: {
|
||||
undo_redo->create_action(TTR("Create tile alternatives"));
|
||||
Array array;
|
||||
for (RBSet<TileSelection>::Element *E = selection.front(); E; E = E->next()) {
|
||||
if (E->get().alternative == 0) {
|
||||
int next_id = tile_set_atlas_source->get_next_alternative_tile_id(E->get().tile);
|
||||
undo_redo->add_do_method(tile_set_atlas_source, "create_alternative_tile", E->get().tile, next_id);
|
||||
array.push_back(E->get().tile);
|
||||
for (const TileSelection &E : selection) {
|
||||
if (E.alternative == 0) {
|
||||
int next_id = tile_set_atlas_source->get_next_alternative_tile_id(E.tile);
|
||||
undo_redo->add_do_method(tile_set_atlas_source, "create_alternative_tile", E.tile, next_id);
|
||||
array.push_back(E.tile);
|
||||
array.push_back(next_id);
|
||||
undo_redo->add_undo_method(tile_set_atlas_source, "remove_alternative_tile", E->get().tile, next_id);
|
||||
undo_redo->add_undo_method(tile_set_atlas_source, "remove_alternative_tile", E.tile, next_id);
|
||||
}
|
||||
}
|
||||
undo_redo->add_do_method(this, "_set_selection_from_array", array);
|
||||
@@ -1658,9 +1658,9 @@ void TileSetAtlasSourceEditor::_set_selection_from_array(Array p_selection) {
|
||||
|
||||
Array TileSetAtlasSourceEditor::_get_selection_as_array() {
|
||||
Array output;
|
||||
for (RBSet<TileSelection>::Element *E = selection.front(); E; E = E->next()) {
|
||||
output.push_back(E->get().tile);
|
||||
output.push_back(E->get().alternative);
|
||||
for (const TileSelection &E : selection) {
|
||||
output.push_back(E.tile);
|
||||
output.push_back(E.alternative);
|
||||
}
|
||||
return output;
|
||||
}
|
||||
@@ -1672,8 +1672,8 @@ void TileSetAtlasSourceEditor::_tile_atlas_control_draw() {
|
||||
|
||||
// Draw the selected tile.
|
||||
if (tools_button_group->get_pressed_button() == tool_select_button) {
|
||||
for (RBSet<TileSelection>::Element *E = selection.front(); E; E = E->next()) {
|
||||
TileSelection selected = E->get();
|
||||
for (const TileSelection &E : selection) {
|
||||
TileSelection selected = E;
|
||||
if (selected.alternative == 0) {
|
||||
// Draw the rect.
|
||||
for (int frame = 0; frame < tile_set_atlas_source->get_tile_animation_frames_count(selected.tile); frame++) {
|
||||
@@ -1722,9 +1722,9 @@ void TileSetAtlasSourceEditor::_tile_atlas_control_draw() {
|
||||
|
||||
if (drag_type == DRAG_TYPE_REMOVE_TILES) {
|
||||
// Draw the tiles to be removed.
|
||||
for (RBSet<Vector2i>::Element *E = drag_modified_tiles.front(); E; E = E->next()) {
|
||||
for (int frame = 0; frame < tile_set_atlas_source->get_tile_animation_frames_count(E->get()); frame++) {
|
||||
tile_atlas_control->draw_rect(tile_set_atlas_source->get_tile_texture_region(E->get(), frame), Color(0.0, 0.0, 0.0), false);
|
||||
for (const Vector2i &E : drag_modified_tiles) {
|
||||
for (int frame = 0; frame < tile_set_atlas_source->get_tile_animation_frames_count(E); frame++) {
|
||||
tile_atlas_control->draw_rect(tile_set_atlas_source->get_tile_texture_region(E, frame), Color(0.0, 0.0, 0.0), false);
|
||||
}
|
||||
}
|
||||
} else if (drag_type == DRAG_TYPE_RECT_SELECT || drag_type == DRAG_TYPE_REMOVE_TILES_USING_RECT) {
|
||||
@@ -1749,8 +1749,8 @@ void TileSetAtlasSourceEditor::_tile_atlas_control_draw() {
|
||||
}
|
||||
}
|
||||
|
||||
for (RBSet<Vector2i>::Element *E = to_paint.front(); E; E = E->next()) {
|
||||
Vector2i coords = E->get();
|
||||
for (const Vector2i &E : to_paint) {
|
||||
Vector2i coords = E;
|
||||
tile_atlas_control->draw_rect(tile_set_atlas_source->get_tile_texture_region(coords), color, false);
|
||||
}
|
||||
} else if (drag_type == DRAG_TYPE_CREATE_TILES_USING_RECT) {
|
||||
@@ -1837,19 +1837,19 @@ void TileSetAtlasSourceEditor::_tile_atlas_control_unscaled_draw() {
|
||||
|
||||
// Draw the selection on top of other.
|
||||
if (tools_button_group->get_pressed_button() == tool_select_button) {
|
||||
for (RBSet<TileSelection>::Element *E = selection.front(); E; E = E->next()) {
|
||||
if (E->get().alternative != 0) {
|
||||
for (const TileSelection &E : selection) {
|
||||
if (E.alternative != 0) {
|
||||
continue;
|
||||
}
|
||||
Rect2i texture_region = tile_set_atlas_source->get_tile_texture_region(E->get().tile);
|
||||
Vector2i position = texture_region.get_center() + tile_set_atlas_source->get_tile_effective_texture_offset(E->get().tile, 0);
|
||||
Rect2i texture_region = tile_set_atlas_source->get_tile_texture_region(E.tile);
|
||||
Vector2i position = texture_region.get_center() + tile_set_atlas_source->get_tile_effective_texture_offset(E.tile, 0);
|
||||
|
||||
Transform2D xform = tile_atlas_control->get_parent_control()->get_transform();
|
||||
xform.translate(position);
|
||||
|
||||
TileMapCell cell;
|
||||
cell.source_id = tile_set_atlas_source_id;
|
||||
cell.set_atlas_coords(E->get().tile);
|
||||
cell.set_atlas_coords(E.tile);
|
||||
cell.alternative_tile = 0;
|
||||
current_tile_data_editor->draw_over_tile(tile_atlas_control_unscaled, xform, cell, true);
|
||||
}
|
||||
@@ -1962,8 +1962,8 @@ void TileSetAtlasSourceEditor::_tile_alternatives_control_draw() {
|
||||
}
|
||||
|
||||
// Draw selected tile.
|
||||
for (RBSet<TileSelection>::Element *E = selection.front(); E; E = E->next()) {
|
||||
TileSelection selected = E->get();
|
||||
for (const TileSelection &E : selection) {
|
||||
TileSelection selected = E;
|
||||
if (selected.alternative >= 1) {
|
||||
Rect2i rect = tile_atlas_view->get_alternative_tile_rect(selected.tile, selected.alternative);
|
||||
if (rect != Rect2i()) {
|
||||
@@ -2005,11 +2005,11 @@ void TileSetAtlasSourceEditor::_tile_alternatives_control_unscaled_draw() {
|
||||
|
||||
// Draw the selection on top of other.
|
||||
if (tools_button_group->get_pressed_button() == tool_select_button) {
|
||||
for (RBSet<TileSelection>::Element *E = selection.front(); E; E = E->next()) {
|
||||
if (E->get().alternative == 0) {
|
||||
for (const TileSelection &E : selection) {
|
||||
if (E.alternative == 0) {
|
||||
continue;
|
||||
}
|
||||
Rect2i rect = tile_atlas_view->get_alternative_tile_rect(E->get().tile, E->get().alternative);
|
||||
Rect2i rect = tile_atlas_view->get_alternative_tile_rect(E.tile, E.alternative);
|
||||
Vector2 position = rect.get_center();
|
||||
|
||||
Transform2D xform = alternative_tiles_control->get_parent_control()->get_transform();
|
||||
@@ -2017,8 +2017,8 @@ void TileSetAtlasSourceEditor::_tile_alternatives_control_unscaled_draw() {
|
||||
|
||||
TileMapCell cell;
|
||||
cell.source_id = tile_set_atlas_source_id;
|
||||
cell.set_atlas_coords(E->get().tile);
|
||||
cell.alternative_tile = E->get().alternative;
|
||||
cell.set_atlas_coords(E.tile);
|
||||
cell.alternative_tile = E.alternative;
|
||||
current_tile_data_editor->draw_over_tile(alternative_tiles_control_unscaled, xform, cell, true);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user