File diff r28780:365899ab5941 → r28781:ee8d01cc7e15
src/pathfinder/water_regions.cpp
Show inline comments
 
@@ -22,7 +22,6 @@
 

	
 
using TWaterRegionTraversabilityBits = uint16_t;
 
constexpr TWaterRegionPatchLabel FIRST_REGION_LABEL = 1;
 
constexpr TWaterRegionPatchLabel INVALID_WATER_REGION_PATCH = 0;
 

	
 
static_assert(sizeof(TWaterRegionTraversabilityBits) * 8 == WATER_REGION_EDGE_LENGTH);
 
static_assert(sizeof(TWaterRegionPatchLabel) == sizeof(byte)); // Important for the hash calculation.
 
@@ -321,6 +320,8 @@ void InvalidateWaterRegion(TileIndex til
 
 */
 
static inline void VisitAdjacentWaterRegionPatchNeighbors(const WaterRegionPatchDesc &water_region_patch, DiagDirection side, TVisitWaterRegionPatchCallBack &func)
 
{
 
	if (water_region_patch.label == INVALID_WATER_REGION_PATCH) return;
 

	
 
	const WaterRegion &current_region = GetUpdatedWaterRegion(water_region_patch.x, water_region_patch.y);
 

	
 
	const TileIndexDiffC offset = TileIndexDiffCByDiagDir(side);
 
@@ -354,6 +355,7 @@ static inline void VisitAdjacentWaterReg
 

	
 
		const TileIndex neighbor_edge_tile = GetEdgeTileCoordinate(nx, ny, opposite_side, x_or_y);
 
		const TWaterRegionPatchLabel neighbor_label = neighboring_region.GetLabel(neighbor_edge_tile);
 
		assert(neighbor_label != INVALID_WATER_REGION_PATCH);
 
		if (std::find(unique_labels.begin(), unique_labels.end(), neighbor_label) == unique_labels.end()) unique_labels.push_back(neighbor_label);
 
	}
 
	for (TWaterRegionPatchLabel unique_label : unique_labels) func(WaterRegionPatchDesc{ nx, ny, unique_label });
 
@@ -367,6 +369,8 @@ static inline void VisitAdjacentWaterReg
 
 */
 
void VisitWaterRegionPatchNeighbors(const WaterRegionPatchDesc &water_region_patch, TVisitWaterRegionPatchCallBack &callback)
 
{
 
	if (water_region_patch.label == INVALID_WATER_REGION_PATCH) return;
 

	
 
	const WaterRegion &current_region = GetUpdatedWaterRegion(water_region_patch.x, water_region_patch.y);
 

	
 
	/* Visit adjacent water region patches in each cardinal direction */