anchor.diff:  end;
   
   
  -
  -
  -{ TKKRoadableFF }
  -constructor TKKRoadableFF.Create(aMinLimit, aMaxLimit: TKMPoint; var aSearchArr: TKMByte2Array; const aScanEightTiles: Boolean = False);
  -begin
  -  inherited Create(aScanEightTiles);
  -  fVisitIdx := High(Byte);
  -  fSearchArr := aSearchArr;
  -  fMinLimit := aMinLimit;
  -  fMaxLimit := aMaxLimit;
  -  SetLength(fVisitArr, Length(fSearchArr), Length(fSearchArr[0]));
  -end;
  -
  -
  -procedure TKKRoadableFF.MakeNewQueue();
  -var
  -  X,Y: Integer;
  -begin
  -  if (fVisitIdx >= High(Byte) - 1) then
  -  begin
  -    fVisitIdx := 0;
  -    for Y := Low(fVisitArr) to High(fVisitArr) do
  -      for X := Low(fVisitArr[Y]) to High(fVisitArr[Y]) do
  -        fVisitArr[Y,X] := 0;
  -  end;
  -  fVisitIdx := fVisitIdx + 1;
  -  inherited MakeNewQueue();
  -end;
  -
  -
  -function TKKRoadableFF.CanBeVisited(const aX,aY: SmallInt): Boolean;
  -begin
  -  Result := gTerrain.TileIsRoadable( KMPoint(aX, aY) );
  -end;
  -
  -
  -function TKKRoadableFF.IsVisited(const aX,aY: SmallInt): Boolean;
  -begin
  -  Result := fVisitArr[aY,aX] = fVisitIdx;
  -end;
  -
  -
  -procedure TKKRoadableFF.MarkAsVisited(const aX,aY: SmallInt);
  -begin
  -  fVisitArr[aY,aX] := fVisitIdx;
  -  fSearchArr[aY,aX] := 0;
  -end;
  -
  -
   end.
  
positive.code:     procedure UpdateOwnership(const aPL: TKMHandIndex);
      // Common
      procedure InitArrays();
      function GetAreaEval(const aY,aX: Word): Byte;
    public
      constructor Create(aNavMesh: TKMNavMesh);
      destructor Destroy(); override;
  
negative.code:     property OwnPoly[const aPL: TKMHandIndex; const aIdx: Word]: Byte read GetOwnership write SetOwnership;
      // Common
      property InfluenceSearch: TNavMeshInfluenceSearch read fInfluenceSearch write fInfluenceSearch;
  
      // Avoid building
      procedure AddAvoidBuilding(aX,aY: Word; aRad: Single; aValue: Byte = 255; aDecreaseCoef: Single = 0);
  