mirror of
https://github.com/OpenMW/openmw.git
synced 2025-06-24 11:11:34 +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
|
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,
|
AsyncNavMeshUpdater::AsyncNavMeshUpdater(const Settings& settings, TileCachedRecastMeshManager& recastMeshManager,
|
||||||
OffMeshConnectionsManager& offMeshConnectionsManager)
|
OffMeshConnectionsManager& offMeshConnectionsManager)
|
||||||
: mSettings(settings)
|
: mSettings(settings)
|
||||||
|
@ -121,20 +134,12 @@ namespace DetourNavigator
|
||||||
{
|
{
|
||||||
if (mPushed.emplace(agentHalfExtents, changedTile).second)
|
if (mPushed.emplace(agentHalfExtents, changedTile).second)
|
||||||
{
|
{
|
||||||
Job job;
|
const auto processTime = changeType == ChangeType::update
|
||||||
|
? mLastUpdates[std::tie(agentHalfExtents, changedTile)] + mSettings.get().mMinUpdateInterval
|
||||||
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
|
|
||||||
: std::chrono::steady_clock::time_point();
|
: 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)
|
if (playerTileChanged)
|
||||||
mWaiting.push_back(it);
|
mWaiting.push_back(it);
|
||||||
|
|
|
@ -55,14 +55,18 @@ namespace DetourNavigator
|
||||||
|
|
||||||
struct Job
|
struct Job
|
||||||
{
|
{
|
||||||
osg::Vec3f mAgentHalfExtents;
|
const osg::Vec3f mAgentHalfExtents;
|
||||||
std::weak_ptr<GuardedNavMeshCacheItem> mNavMeshCacheItem;
|
const std::weak_ptr<GuardedNavMeshCacheItem> mNavMeshCacheItem;
|
||||||
TilePosition mChangedTile;
|
const TilePosition mChangedTile;
|
||||||
unsigned mTryNumber;
|
const std::chrono::steady_clock::time_point mProcessTime;
|
||||||
ChangeType mChangeType;
|
unsigned mTryNumber = 0;
|
||||||
|
const ChangeType mChangeType;
|
||||||
int mDistanceToPlayer;
|
int mDistanceToPlayer;
|
||||||
int mDistanceToOrigin;
|
const int mDistanceToOrigin;
|
||||||
std::chrono::steady_clock::time_point mProcessTime;
|
|
||||||
|
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;
|
using JobIt = std::list<Job>::iterator;
|
||||||
|
|
Loading…
Reference in a new issue