//--------------------------------------------------------------------- public bool Search(EbAstarStep src, EbAstarStep dest) { src.G = 0; src.H = EbAstarStep.Distance(src, dest); src.Key = src.G + src.H; mStepStart = src; mStepBest = src; mStepStart.Clear(); mStepDest = dest; mStepCnt = 0; _AddToOpen(src); while (mOpenHeap.Size > 0) { mStepCurrent = mOpenHeap.Pop(); if (DestChecker.isDest(mStepCurrent)) { mStepBest = mStepCurrent; return(true); } if (mStepCnt > mStepCntMax) { return(false); } if (mStepCurrent.H < mStepBest.H) { mStepBest = mStepCurrent; } ++mStepCnt; _NewStep(mStepCurrent); mStepCurrent.AttachNode.Detach(); _AddToClose(mStepCurrent); } return(false); }