@@ -93,25 +93,23 @@ void TilesEditorUtils::_thread() {
9393 viewport->set_transparent_background (true );
9494 viewport->set_update_mode (SubViewport::UPDATE_ONCE);
9595
96- TileMap *tile_map = memnew (TileMap);
97- tile_map->set_tileset (item.tile_set );
98- tile_map->set_pattern (0 , Vector2 (), item.pattern );
99- viewport->add_child (tile_map);
100-
101- TypedArray<Vector2i> used_cells = tile_map->get_used_cells (0 );
96+ TileMapLayer *tile_map_layer = memnew (TileMapLayer);
97+ tile_map_layer->set_tile_set (item.tile_set );
98+ tile_map_layer->set_pattern (Vector2 (), item.pattern );
99+ viewport->add_child (tile_map_layer);
102100
103101 Rect2 encompassing_rect;
104- encompassing_rect.set_position (tile_map ->map_to_local (used_cells[ 0 ] ));
105- for (int i = 0 ; i < used_cells. size (); i++ ) {
106- Vector2i cell = used_cells[i] ;
107- Vector2 world_pos = tile_map ->map_to_local (cell);
102+ encompassing_rect.set_position (tile_map_layer ->map_to_local (tile_map_layer-> get_tile_map_layer_data (). begin ()-> key ));
103+ for (KeyValue<Vector2i, CellData> kv : tile_map_layer-> get_tile_map_layer_data () ) {
104+ Vector2i cell = kv. key ;
105+ Vector2 world_pos = tile_map_layer ->map_to_local (cell);
108106 encompassing_rect.expand_to (world_pos);
109107
110108 // Texture.
111- Ref<TileSetAtlasSource> atlas_source = item.tile_set ->get_source (tile_map ->get_cell_source_id (0 , cell));
109+ Ref<TileSetAtlasSource> atlas_source = item.tile_set ->get_source (tile_map_layer ->get_cell_source_id (cell));
112110 if (atlas_source.is_valid ()) {
113- Vector2i coords = tile_map ->get_cell_atlas_coords (0 , cell);
114- int alternative = tile_map ->get_cell_alternative_tile (0 , cell);
111+ Vector2i coords = tile_map_layer ->get_cell_atlas_coords (cell);
112+ int alternative = tile_map_layer ->get_cell_alternative_tile (cell);
115113
116114 if (atlas_source->has_tile (coords) && atlas_source->has_alternative_tile (coords, alternative)) {
117115 Vector2 center = world_pos - atlas_source->get_tile_data (coords, alternative)->get_texture_origin ();
@@ -122,8 +120,8 @@ void TilesEditorUtils::_thread() {
122120 }
123121
124122 Vector2 scale = thumbnail_size2 / MAX (encompassing_rect.size .x , encompassing_rect.size .y );
125- tile_map ->set_scale (scale);
126- tile_map ->set_position (-(scale * encompassing_rect.get_center ()) + thumbnail_size2 / 2 );
123+ tile_map_layer ->set_scale (scale);
124+ tile_map_layer ->set_position (-(scale * encompassing_rect.get_center ()) + thumbnail_size2 / 2 );
127125
128126 // Add the viewport at the last moment to avoid rendering too early.
129127 callable_mp ((Node *)EditorNode::get_singleton (), &Node::add_child).call_deferred (viewport, false , Node::INTERNAL_MODE_DISABLED);
0 commit comments