1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-06 09:09:40 +02:00

Try to not route roads through passable objects

This commit is contained in:
Tomasz Zieliński
2024-03-01 17:48:07 +01:00
parent d078808c9f
commit 8f1638f78a
3 changed files with 30 additions and 7 deletions

View File

@@ -597,7 +597,7 @@ void ObjectManager::placeObject(rmg::Object & object, bool guarded, bool updateD
{
objectsVisitableArea.add(instance->getVisitablePosition());
objects.push_back(&instance->object());
if(auto * m = zone.getModificator<RoadPlacer>())
if(auto * rp = zone.getModificator<RoadPlacer>())
{
if (instance->object().blockVisit && !instance->object().removable)
{
@@ -607,7 +607,7 @@ void ObjectManager::placeObject(rmg::Object & object, bool guarded, bool updateD
else if(instance->object().appearance->isVisitableFromTop())
{
//Passable objects
m->areaForRoads().add(instance->getVisitablePosition());
rp->areaForRoads().add(instance->getVisitablePosition());
}
else if(!instance->object().appearance->isVisitableFromTop())
{
@@ -621,8 +621,10 @@ void ObjectManager::placeObject(rmg::Object & object, bool guarded, bool updateD
(!instance->object().blockingAt(tile + int3(0, 1, 0)) &&
instance->object().blockingAt(tile));
});
m->areaIsolated().unite(borderAbove);
rp->areaIsolated().unite(borderAbove);
}
rp->areaVisitable().add(instance->getVisitablePosition());
}
switch (instance->object().ID.toEnum())