1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-02-20 19:39:41 +00:00

Store priority values as named fields

This commit is contained in:
elsid 2019-03-08 15:23:36 +03:00
parent 0c16fef285
commit b9b8ed177c
No known key found for this signature in database
GPG key ID: B845CB9FEE18AB40
2 changed files with 21 additions and 14 deletions

View file

@ -14,16 +14,6 @@ namespace
{
return std::abs(lhs.x() - rhs.x()) + std::abs(lhs.y() - rhs.y());
}
std::tuple<ChangeType, int, int> makePriority(const TilePosition& position, const ChangeType changeType,
const TilePosition& playerTile)
{
return std::make_tuple(
changeType,
getManhattanDistance(position, playerTile),
getManhattanDistance(position, TilePosition {0, 0})
);
}
}
namespace DetourNavigator
@ -81,8 +71,18 @@ namespace DetourNavigator
for (const auto& changedTile : changedTiles)
{
if (mPushed[agentHalfExtents].insert(changedTile.first).second)
mJobs.push(Job {agentHalfExtents, navMeshCacheItem, changedTile.first,
makePriority(changedTile.first, changedTile.second, playerTile)});
{
Job job;
job.mAgentHalfExtents = agentHalfExtents;
job.mNavMeshCacheItem = navMeshCacheItem;
job.mChangedTile = changedTile.first;
job.mChangeType = changedTile.second;
job.mDistanceToPlayer = getManhattanDistance(changedTile.first, playerTile);
job.mDistanceToOrigin = getManhattanDistance(changedTile.first, TilePosition {0, 0});
mJobs.push(std::move(job));
}
}
log("posted ", mJobs.size(), " jobs");

View file

@ -50,11 +50,18 @@ namespace DetourNavigator
osg::Vec3f mAgentHalfExtents;
SharedNavMeshCacheItem mNavMeshCacheItem;
TilePosition mChangedTile;
std::tuple<ChangeType, int, int> mPriority;
ChangeType mChangeType;
int mDistanceToPlayer;
int mDistanceToOrigin;
std::tuple<ChangeType, int, int> getPriority() const
{
return std::make_tuple(mChangeType, mDistanceToPlayer, mDistanceToOrigin);
}
friend inline bool operator <(const Job& lhs, const Job& rhs)
{
return lhs.mPriority > rhs.mPriority;
return lhs.getPriority() > rhs.getPriority();
}
};