mirror of
https://github.com/OpenMW/openmw.git
synced 2025-04-02 04:36:39 +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());
|
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
|
namespace DetourNavigator
|
||||||
|
@ -81,8 +71,18 @@ namespace DetourNavigator
|
||||||
for (const auto& changedTile : changedTiles)
|
for (const auto& changedTile : changedTiles)
|
||||||
{
|
{
|
||||||
if (mPushed[agentHalfExtents].insert(changedTile.first).second)
|
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");
|
log("posted ", mJobs.size(), " jobs");
|
||||||
|
|
|
@ -50,11 +50,18 @@ namespace DetourNavigator
|
||||||
osg::Vec3f mAgentHalfExtents;
|
osg::Vec3f mAgentHalfExtents;
|
||||||
SharedNavMeshCacheItem mNavMeshCacheItem;
|
SharedNavMeshCacheItem mNavMeshCacheItem;
|
||||||
TilePosition mChangedTile;
|
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)
|
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