mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-21 06:09:42 +00:00
Make unchanging Job fields const
This commit is contained in:
parent
21ce4fe637
commit
09b1a2e3c6
2 changed files with 28 additions and 19 deletions
|
@ -73,6 +73,19 @@ namespace
|
|||
|
||||
namespace DetourNavigator
|
||||
{
|
||||
Job::Job(const osg::Vec3f& agentHalfExtents, std::weak_ptr<GuardedNavMeshCacheItem> navMeshCacheItem,
|
||||
const TilePosition& changedTile, ChangeType changeType, int distanceToPlayer,
|
||||
std::chrono::steady_clock::time_point processTime)
|
||||
: mAgentHalfExtents(agentHalfExtents)
|
||||
, mNavMeshCacheItem(std::move(navMeshCacheItem))
|
||||
, mChangedTile(changedTile)
|
||||
, mProcessTime(processTime)
|
||||
, mChangeType(changeType)
|
||||
, mDistanceToPlayer(distanceToPlayer)
|
||||
, mDistanceToOrigin(getManhattanDistance(changedTile, TilePosition {0, 0}))
|
||||
{
|
||||
}
|
||||
|
||||
AsyncNavMeshUpdater::AsyncNavMeshUpdater(const Settings& settings, TileCachedRecastMeshManager& recastMeshManager,
|
||||
OffMeshConnectionsManager& offMeshConnectionsManager)
|
||||
: mSettings(settings)
|
||||
|
@ -121,20 +134,12 @@ namespace DetourNavigator
|
|||
{
|
||||
if (mPushed.emplace(agentHalfExtents, changedTile).second)
|
||||
{
|
||||
Job job;
|
||||
|
||||
job.mAgentHalfExtents = agentHalfExtents;
|
||||
job.mNavMeshCacheItem = navMeshCacheItem;
|
||||
job.mChangedTile = changedTile;
|
||||
job.mTryNumber = 0;
|
||||
job.mChangeType = changeType;
|
||||
job.mDistanceToPlayer = getManhattanDistance(changedTile, playerTile);
|
||||
job.mDistanceToOrigin = getManhattanDistance(changedTile, TilePosition {0, 0});
|
||||
job.mProcessTime = job.mChangeType == ChangeType::update
|
||||
? mLastUpdates[getAgentAndTile(job)] + mSettings.get().mMinUpdateInterval
|
||||
const auto processTime = changeType == ChangeType::update
|
||||
? mLastUpdates[std::tie(agentHalfExtents, changedTile)] + mSettings.get().mMinUpdateInterval
|
||||
: std::chrono::steady_clock::time_point();
|
||||
|
||||
const JobIt it = mJobs.insert(mJobs.end(), std::move(job));
|
||||
const JobIt it = mJobs.emplace(mJobs.end(), agentHalfExtents, navMeshCacheItem, changedTile,
|
||||
changeType, getManhattanDistance(changedTile, playerTile), processTime);
|
||||
|
||||
if (playerTileChanged)
|
||||
mWaiting.push_back(it);
|
||||
|
|
|
@ -55,14 +55,18 @@ namespace DetourNavigator
|
|||
|
||||
struct Job
|
||||
{
|
||||
osg::Vec3f mAgentHalfExtents;
|
||||
std::weak_ptr<GuardedNavMeshCacheItem> mNavMeshCacheItem;
|
||||
TilePosition mChangedTile;
|
||||
unsigned mTryNumber;
|
||||
ChangeType mChangeType;
|
||||
const osg::Vec3f mAgentHalfExtents;
|
||||
const std::weak_ptr<GuardedNavMeshCacheItem> mNavMeshCacheItem;
|
||||
const TilePosition mChangedTile;
|
||||
const std::chrono::steady_clock::time_point mProcessTime;
|
||||
unsigned mTryNumber = 0;
|
||||
const ChangeType mChangeType;
|
||||
int mDistanceToPlayer;
|
||||
int mDistanceToOrigin;
|
||||
std::chrono::steady_clock::time_point mProcessTime;
|
||||
const int mDistanceToOrigin;
|
||||
|
||||
Job(const osg::Vec3f& agentHalfExtents, std::weak_ptr<GuardedNavMeshCacheItem> navMeshCacheItem,
|
||||
const TilePosition& changedTile, ChangeType changeType, int distanceToPlayer,
|
||||
std::chrono::steady_clock::time_point processTime);
|
||||
};
|
||||
|
||||
using JobIt = std::list<Job>::iterator;
|
||||
|
|
Loading…
Reference in a new issue