#pragma once #include "Engine/Nullkiller.h" namespace NKAI { template void pforeachTilePos(const int3 & mapSize, TFunc fn) { for(int z = 0; z < mapSize.z; ++z) { tbb::parallel_for(tbb::blocked_range(0, mapSize.x), [&](const tbb::blocked_range & r) { int3 pos(0, 0, z); for(pos.x = r.begin(); pos.x != r.end(); ++pos.x) { for(pos.y = 0; pos.y < mapSize.y; ++pos.y) { fn(pos); } } }); } } template void pforeachTilePaths(const int3 & mapSize, const Nullkiller * ai, TFunc fn) { for(int z = 0; z < mapSize.z; ++z) { tbb::parallel_for(tbb::blocked_range(0, mapSize.x), [&](const tbb::blocked_range & r) { int3 pos(0, 0, z); std::vector paths; for(pos.x = r.begin(); pos.x != r.end(); ++pos.x) { for(pos.y = 0; pos.y < mapSize.y; ++pos.y) { ai->pathfinder->calculatePathInfo(paths, pos); fn(pos, paths); } } }); } } }