### Godot version

v4.2.stable.official [46dc27791]

### System information

Godot v4.2.stable - Windows 10.0.19045 - Vulkan (Forward+) - integrated Intel(R) HD Graphics 630 (Intel Corporation; 31.0.101.2111) - Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz (4 Threads)

### Issue description

I have a tileset that disables its visibility during it's `_ready()` function. The tileset is made up of scene tiles. I didn't have a problem with this until recently I discovered my player goes right through the tiles unless they're visible. This didn't happen before, it could be something to do with the 4.2 update.

### Steps to reproduce

In my minimal reproduction project I removed the script that disables the tileset's visibility.

- Run the game with the tileset visible and use wasd keys to move downward. The tileset should block the player (it's using `move_and_slide()`).
- Run the game with the tileset non-visible and use wasd keys to move downward. The tileset isn't block the player.

### Minimal reproduction project

[Bug Demo.zip](https://github.com/godotengine/godot/files/13531278/Bug.Demo.zip)

#endif 
	_clear_runtime_update_tile_data();
	
	for (int i = 0; i < DIRTY_FLAGS_MAX; i++) {
		dirty.flags[i] = false;
	}
	
	Vector<Vector2i> to_delete;
	for (SelfList<CellData> *cell_data_list_element = dirty.cell_list.first(); cell_data_list_element; cell_data_list_element = cell_data_list_element->next()) {
		CellData &cell_data = *cell_data_list_element->self();
		
		if (cell_data.cell.source_id == TileSet::INVALID_SOURCE) {
			to_delete.push_back(cell_data.coords);
		}
	}
	
	for (const Vector2i &coords : to_delete) {
		tile_map.erase(coords);
	}
	
	dirty.cell_list.clear();
}
void TileMapLayer::set_cell(const Vector2i &p_coords, int p_source_id, const Vector2i p_atlas_coords, int p_alternative_tile) {
	
	Vector2i pk(p_coords);
	HashMap<Vector2i, CellData>::Iterator E = tile_map.find(pk);
	int source_id = p_source_id;
	Vector2i atlas_coords = p_atlas_coords;
	int alternative_tile = p_alternative_tile;
	if ((source_id == TileSet::INVALID_SOURCE || atlas_coords == TileSetSource::INVALID_ATLAS_COORDS || alternative_tile == TileSetSource::INVALID_TILE_ALTERNATIVE) &&