CvAStar::CopyPath(const CvAStarNode *, CvPathNodeArray &)
- Defined in
- CvAStar.cpp, line 4227
- Class
- CvAStar
- Hook name
CivHooks::CvAStar_CopyPath
Hooks
static bool BeforeCvAStar_CopyPath(const CvAStarNode* pkEndNode, CvPathNodeArray& kPathArray);static void AfterCvAStar_CopyPath(const CvAStarNode* pkEndNode, CvPathNodeArray& kPathArray);static void ReplaceCvAStar_CopyPath(void (*original)(const CvAStarNode*, CvPathNodeArray&), const CvAStarNode* pkEndNode, CvPathNodeArray& kPathArray);CivRegisterBefore<CivHooks::CvAStar_CopyPath>(host, &BeforeCvAStar_CopyPath);CivRegisterAfter<CivHooks::CvAStar_CopyPath>(host, &AfterCvAStar_CopyPath);CivRegisterReplace<CivHooks::CvAStar_CopyPath>(host, &ReplaceCvAStar_CopyPath);
Code
4224// Copy the supplied node and its parent nodes into an array of simpler path nodes for caching purposes.4225// It is ok to pass in NULL, the resulting array will contain zero elements4226//static4227void CvAStar::CopyPath(const CvAStarNode* pkEndNode, CvPathNodeArray& kPathArray)4228{4229 if(pkEndNode != NULL)4230 {4231 const CvAStarNode* pkNode = pkEndNode;42324233 // Count the number of nodes4234 uint uiNodeCount = 1;42354236 while(pkNode->m_pParent != NULL)4237 {4238 ++uiNodeCount;4239 pkNode = pkNode->m_pParent;4240 }42414242 kPathArray.setsize(uiNodeCount);42434244 pkNode = pkEndNode;4245 kPathArray[0] = *pkNode;42464247 uint uiIndex = 1;4248 while(pkNode->m_pParent != NULL)4249 {4250 pkNode = pkNode->m_pParent;4251 kPathArray[uiIndex++] = *pkNode;4252 }4253 }4254 else4255 kPathArray.setsize(0); // Setting the size to 0 rather than clearing so that the array data is not deleted. Helps with memory thrashing.4256}
Calls
BaseVector::operator[]- CvPathNode::operator=(const CvAStarNode &)
FFastVector::setsize