mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Recast: fix dtNavMeshQuery regression
pointers were also nulled during the memset after the move to the dtQueryStruct in commit 9049e61d34cb3f52627b8ca10f1b7da21e147ad9. Created dedicated 'Reset' method.
This commit is contained in:
parent
baa3d8f878
commit
1255629fcf
@ -561,6 +561,27 @@ private:
|
|||||||
|
|
||||||
struct dtQueryData
|
struct dtQueryData
|
||||||
{
|
{
|
||||||
|
void Reset()
|
||||||
|
{
|
||||||
|
status = 0;
|
||||||
|
lastBestNode = nullptr;
|
||||||
|
lastBestNodeCost = 0.0f;
|
||||||
|
startRef = 0; endRef = 0;
|
||||||
|
|
||||||
|
startPos[0] = 0.0f;
|
||||||
|
startPos[1] = 0.0f;
|
||||||
|
startPos[2] = 0.0f;
|
||||||
|
|
||||||
|
endPos[0] = 0.0f;
|
||||||
|
endPos[1] = 0.0f;
|
||||||
|
endPos[2] = 0.0f;
|
||||||
|
|
||||||
|
options = 0;
|
||||||
|
raycastLimitSqr = 0.0f;
|
||||||
|
|
||||||
|
// NOTE: the nodepool/nodequeue pointers should not be reset !!!
|
||||||
|
}
|
||||||
|
|
||||||
dtStatus status;
|
dtStatus status;
|
||||||
struct dtNode* lastBestNode;
|
struct dtNode* lastBestNode;
|
||||||
float lastBestNodeCost;
|
float lastBestNodeCost;
|
||||||
|
@ -1202,7 +1202,7 @@ dtStatus dtNavMeshQuery::initSlicedFindPath(dtPolyRef startRef, dtPolyRef endRef
|
|||||||
dtAssert(m_query.m_openList);
|
dtAssert(m_query.m_openList);
|
||||||
|
|
||||||
// Init path state.
|
// Init path state.
|
||||||
memset(&m_query, 0, sizeof(dtQueryData));
|
m_query.Reset();
|
||||||
m_query.status = DT_FAILURE;
|
m_query.status = DT_FAILURE;
|
||||||
m_query.startRef = startRef;
|
m_query.startRef = startRef;
|
||||||
m_query.endRef = endRef;
|
m_query.endRef = endRef;
|
||||||
@ -1487,7 +1487,7 @@ dtStatus dtNavMeshQuery::finalizeSlicedFindPath(dtPolyRef* path, int* pathCount,
|
|||||||
if (dtStatusFailed(m_query.status))
|
if (dtStatusFailed(m_query.status))
|
||||||
{
|
{
|
||||||
// Reset query.
|
// Reset query.
|
||||||
memset(&m_query, 0, sizeof(dtQueryData));
|
m_query.Reset();
|
||||||
return DT_FAILURE;
|
return DT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1557,7 +1557,7 @@ dtStatus dtNavMeshQuery::finalizeSlicedFindPath(dtPolyRef* path, int* pathCount,
|
|||||||
const dtStatus details = m_query.status & DT_STATUS_DETAIL_MASK;
|
const dtStatus details = m_query.status & DT_STATUS_DETAIL_MASK;
|
||||||
|
|
||||||
// Reset query.
|
// Reset query.
|
||||||
memset(&m_query, 0, sizeof(dtQueryData));
|
m_query.Reset();
|
||||||
|
|
||||||
*pathCount = n;
|
*pathCount = n;
|
||||||
|
|
||||||
@ -1578,7 +1578,7 @@ dtStatus dtNavMeshQuery::finalizeSlicedFindPathPartial(const dtPolyRef* existing
|
|||||||
if (dtStatusFailed(m_query.status))
|
if (dtStatusFailed(m_query.status))
|
||||||
{
|
{
|
||||||
// Reset query.
|
// Reset query.
|
||||||
memset(&m_query, 0, sizeof(dtQueryData));
|
m_query.Reset();
|
||||||
return DT_FAILURE;
|
return DT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1658,7 +1658,7 @@ dtStatus dtNavMeshQuery::finalizeSlicedFindPathPartial(const dtPolyRef* existing
|
|||||||
const dtStatus details = m_query.status & DT_STATUS_DETAIL_MASK;
|
const dtStatus details = m_query.status & DT_STATUS_DETAIL_MASK;
|
||||||
|
|
||||||
// Reset query.
|
// Reset query.
|
||||||
memset(&m_query, 0, sizeof(dtQueryData));
|
m_query.Reset();
|
||||||
|
|
||||||
*pathCount = n;
|
*pathCount = n;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user