Bazaar developer reference

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

Called by