non allocate

This commit is contained in:
ikpil 2023-06-23 07:06:01 +09:00
parent 33399c0348
commit a5fc55ab71
1 changed files with 10 additions and 10 deletions

View File

@ -991,7 +991,8 @@ namespace DotRecast.Detour
} }
} }
List<long> path = GetPathToNode(lastBestNode); var path = new List<long>();
GetPathToNode(lastBestNode, ref path);
if (lastBestNode.id != endRef) if (lastBestNode.id != endRef)
{ {
@ -1354,7 +1355,7 @@ namespace DotRecast.Detour
m_query.status = DtStatus.DT_PARTIAL_RESULT; m_query.status = DtStatus.DT_PARTIAL_RESULT;
} }
path = GetPathToNode(m_query.lastBestNode); GetPathToNode(m_query.lastBestNode, ref path);
} }
DtStatus status = m_query.status; DtStatus status = m_query.status;
@ -1410,7 +1411,7 @@ namespace DotRecast.Detour
node = m_query.lastBestNode; node = m_query.lastBestNode;
} }
path = GetPathToNode(node); GetPathToNode(node, ref path);
} }
DtStatus status = m_query.status; DtStatus status = m_query.status;
@ -3378,15 +3379,14 @@ namespace DotRecast.Detour
return Results.InvalidParam<List<long>>("Invalid end ref"); return Results.InvalidParam<List<long>>("Invalid end ref");
} }
return Results.Success(GetPathToNode(endNode)); var path = new List<long>();
GetPathToNode(endNode, ref path);
return Results.Success(path);
} }
/** // Gets the path leading to the specified end node.
* Gets the path leading to the specified end node. protected DtStatus GetPathToNode(DtNode endNode, ref List<long> path)
*/
protected List<long> GetPathToNode(DtNode endNode)
{ {
List<long> path = new List<long>();
// Reverse the path. // Reverse the path.
DtNode curNode = endNode; DtNode curNode = endNode;
do do
@ -3409,7 +3409,7 @@ namespace DotRecast.Detour
curNode = nextNode; curNode = nextNode;
} while (curNode != null); } while (curNode != null);
return path; return DtStatus.DT_SUCCSESS;
} }
/** /**