diff options
author | Filip Gawin <filip.gawin@zoho.com> | 2020-04-18 12:29:28 +0200 |
---|---|---|
committer | Filip Gawin <filip.gawin@zoho.com> | 2020-04-18 12:29:28 +0200 |
commit | d6314f9564912393134d832b8cc268dd3dbfcbaa (patch) | |
tree | ae1f36342a40ecf2baff2523c7b85ba140260e77 /src/control/PathFind.cpp | |
parent | Merge branch 'master' of https://github.com/GTAmodding/re3 (diff) | |
download | re3-d6314f9564912393134d832b8cc268dd3dbfcbaa.tar re3-d6314f9564912393134d832b8cc268dd3dbfcbaa.tar.gz re3-d6314f9564912393134d832b8cc268dd3dbfcbaa.tar.bz2 re3-d6314f9564912393134d832b8cc268dd3dbfcbaa.tar.lz re3-d6314f9564912393134d832b8cc268dd3dbfcbaa.tar.xz re3-d6314f9564912393134d832b8cc268dd3dbfcbaa.tar.zst re3-d6314f9564912393134d832b8cc268dd3dbfcbaa.zip |
Diffstat (limited to 'src/control/PathFind.cpp')
-rw-r--r-- | src/control/PathFind.cpp | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/src/control/PathFind.cpp b/src/control/PathFind.cpp index cedef63c..9d0959a8 100644 --- a/src/control/PathFind.cpp +++ b/src/control/PathFind.cpp @@ -1466,11 +1466,8 @@ CPathFind::DoPathSearch(uint8 type, CVector start, int32 startNodeId, CVector ta targetNode = FindNodeClosestToCoors(target, type, distLimit); else targetNode = forcedTargetNode; - if(targetNode < 0) { - *pNumNodes = 0; - if(pDist) *pDist = 100000.0f; - return; - } + if(targetNode < 0) + goto fail; // Find start int numPathsToTry; @@ -1489,28 +1486,19 @@ CPathFind::DoPathSearch(uint8 type, CVector start, int32 startNodeId, CVector ta numPathsToTry = 1; startObj = m_mapObjects[m_pathNodes[startNodeId].objectIndex]; } - if(numPathsToTry == 0) { - *pNumNodes = 0; - if(pDist) *pDist = 100000.0f; - return; - } + if(numPathsToTry == 0) + goto fail; if(startNodeId < 0){ // why only check node 0? - if(m_pathNodes[startObj->m_nodeIndices[type][0]].group != - m_pathNodes[targetNode].group) { - *pNumNodes = 0; - if(pDist) *pDist = 100000.0f; - return; - } + if(m_pathNodes[startObj->m_nodeIndices[type][0]].group != m_pathNodes[targetNode].group) + goto fail; }else{ - if(m_pathNodes[startNodeId].group != m_pathNodes[targetNode].group) { - *pNumNodes = 0; - if(pDist) *pDist = 100000.0f; - return; - } + if(m_pathNodes[startNodeId].group != m_pathNodes[targetNode].group) + goto fail; } + for(i = 0; i < 512; i++) m_searchNodes[i].next = nil; AddNodeToList(&m_pathNodes[targetNode], 0); @@ -1588,6 +1576,11 @@ CPathFind::DoPathSearch(uint8 type, CVector start, int32 startNodeId, CVector ta for(i = 0; i < numNodesToBeCleared; i++) apNodesToBeCleared[i]->distance = MAX_DIST; return; + +fail: + *pNumNodes = 0; + if(pDist) + *pDist = 100000.0f; } static CPathNode *pNodeList[32]; |