回答为什么搜索目录会有2048条
由于每个栅格周围均有8个邻居,故在jumpDistancesAndGoalBounds_.blockedDirectionBitfield中表现为8个2进制位,计算可得(2^7)*8 = 2048
计算公式为
(jumpDistancesAndGoalBounds_.blockedDirectionBitfield * 8) + currentNode.m_directionFromParent
并且已知currentNode.m_directionFromParent为从0到8的数值,分别代表down,downRigh,right,....直到DownLeft,Null,共9个
由于
if(map.jumpDistance[i] == 0)
{
map.blockedDirectionBitfield |= (1 << i);
}
因此可知只有8位中任意一位二进制不为0,那么这个点就不是wall,因此最大的点为8个中最小一位不为0,计算可得255*8 = 2040,加上 currentNode.m_directionFromParent的(0~8)最大为2048,超过这个数值的搜索都是不成立的。
其他的细节尚在学习中,望大家多多指正