|
|
@@ -395,14 +395,17 @@ void CZonePlacer::moveOneZone(TZoneMap &zones, TForceVector &totalForces, TDista
|
|
|
targetZone = otherZone;
|
|
|
}
|
|
|
}
|
|
|
- float3 vec = targetZone->getCenter() - ourCenter;
|
|
|
- float newDistanceBetweenZones = (std::max(misplacedZone->getSize(), targetZone->getSize())) / mapSize;
|
|
|
- logGlobal->traceStream() << boost::format("Trying to move zone %d %s towards %d %s. Old distance %f") %
|
|
|
- misplacedZone->getId() % ourCenter() % targetZone->getId() % targetZone->getCenter()() % maxDistance;
|
|
|
- logGlobal->traceStream() << boost::format("direction is %s") % vec();
|
|
|
-
|
|
|
- misplacedZone->setCenter(targetZone->getCenter() - vec.unitVector() * newDistanceBetweenZones); //zones should now overlap by half size
|
|
|
- logGlobal->traceStream() << boost::format("New distance %f") % targetZone->getCenter().dist2d(misplacedZone->getCenter());
|
|
|
+ if (targetZone) //TODO: consider refactoring duplicated code
|
|
|
+ {
|
|
|
+ float3 vec = targetZone->getCenter() - ourCenter;
|
|
|
+ float newDistanceBetweenZones = (std::max(misplacedZone->getSize(), targetZone->getSize())) / mapSize;
|
|
|
+ logGlobal->traceStream() << boost::format("Trying to move zone %d %s towards %d %s. Old distance %f") %
|
|
|
+ misplacedZone->getId() % ourCenter() % targetZone->getId() % targetZone->getCenter()() % maxDistance;
|
|
|
+ logGlobal->traceStream() << boost::format("direction is %s") % vec();
|
|
|
+
|
|
|
+ misplacedZone->setCenter(targetZone->getCenter() - vec.unitVector() * newDistanceBetweenZones); //zones should now overlap by half size
|
|
|
+ logGlobal->traceStream() << boost::format("New distance %f") % targetZone->getCenter().dist2d(misplacedZone->getCenter());
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|