Sfoglia il codice sorgente

Fixed main issue with custom path routing

Tomasz Zieliński 11 mesi fa
parent
commit
9277c5f4e7
2 ha cambiato i file con 4 aggiunte e 8 eliminazioni
  1. 3 7
      lib/rmg/RmgPath.cpp
  2. 1 1
      lib/rmg/modificators/RoadPlacer.cpp

+ 3 - 7
lib/rmg/RmgPath.cpp

@@ -116,8 +116,7 @@ Path Path::search(const Tileset & dst, bool straight, std::function<float(const
 				if(!result.dArea->contains(pos))
 					return;
 				
-				float movementCost = moveCostFunction(currentNode, pos) + currentNode.dist2d(pos);
-				
+				float movementCost = moveCostFunction(currentNode, pos);
 				float distance = distances[currentNode] + movementCost; //we prefer to use already free paths
 				int bestDistanceSoFar = std::numeric_limits<int>::max();
 				auto it = distances.find(pos);
@@ -196,15 +195,12 @@ Path::MoveCostFunction Path::createCurvedCostFunction(const Area & border)
 	return [border = border](const int3& src, const int3& dst) -> float
 	{
 		// Route main roads far from border
-		//float ret = dst.dist2d(src);
 		float ret = dst.dist2d(src);
-
 		float dist = border.distanceSqr(dst);
-		//int3 closestTile = border.nearest(dst);
-		//float dist = dst.chebdist2d(closestTile);
+
 		if(dist > 1.0f)
 		{
-			ret /= dist * dist;
+			ret /= dist;
 		}
 		return ret;
 	};

+ 1 - 1
lib/rmg/modificators/RoadPlacer.cpp

@@ -91,7 +91,7 @@ bool RoadPlacer::createRoad(const int3 & destination)
 			float dist = border.distanceSqr(dst);
 			if(dist > 1.0f)
 			{
-				ret /= dist * dist;
+				ret /= dist;
 			}
 			return ret;
 		}