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:
parent
0c16fef285
commit
b9b8ed177c
2 changed files with 21 additions and 14 deletions
|
@ -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");
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue