PathFinder uses UniquePtr for cell map.
This commit is contained in:
parent
5a1be26203
commit
4ffc6621a9
@ -215,11 +215,6 @@ bool cPath::Step_Internal()
|
||||
|
||||
void cPath::FinishCalculation()
|
||||
{
|
||||
for (auto && pair : m_Map)
|
||||
{
|
||||
delete pair.second;
|
||||
}
|
||||
|
||||
m_Map.clear();
|
||||
m_OpenList = std::priority_queue<cPathCell *, std::vector<cPathCell *>, compareHeuristics>{};
|
||||
}
|
||||
@ -348,7 +343,7 @@ cPathCell * cPath::GetCell(const Vector3i & a_Location)
|
||||
{
|
||||
Cell = new cPathCell();
|
||||
Cell->m_Location = a_Location;
|
||||
m_Map[a_Location] = Cell;
|
||||
m_Map[a_Location] = UniquePtr<cPathCell>(Cell);
|
||||
Cell->m_IsSolid = IsSolid(a_Location);
|
||||
Cell->m_Status = eCellStatus::NOLIST;
|
||||
#ifdef COMPILING_PATHFIND_DEBUGGER
|
||||
@ -360,6 +355,6 @@ cPathCell * cPath::GetCell(const Vector3i & a_Location)
|
||||
}
|
||||
else
|
||||
{
|
||||
return m_Map[a_Location];
|
||||
return m_Map[a_Location].get();
|
||||
}
|
||||
}
|
||||
|
@ -131,7 +131,7 @@ private:
|
||||
|
||||
/* Pathfinding fields */
|
||||
std::priority_queue<cPathCell *, std::vector<cPathCell *>, compareHeuristics> m_OpenList;
|
||||
std::unordered_map<Vector3i, cPathCell *, VectorHasher> m_Map;
|
||||
std::unordered_map<Vector3i, UniquePtr<cPathCell>, VectorHasher> m_Map;
|
||||
Vector3i m_Destination;
|
||||
Vector3i m_Source;
|
||||
int m_StepsLeft;
|
||||
|
Loading…
Reference in New Issue
Block a user