public void SearchRiver(RiverSearchDelegate call) { kRecord.Clear(); for (Direction dir = Direction.Begin; dir <= Direction.End; ++dir) { SearchRiver(call, dir, kOrigin); } }
public void SearchRiver(RiverSearchDelegate call, Direction kDir, Bounds b) { if (b != null) { if (!kRecord.ContainsKey(b)) { call(b); kRecord.Add(b, 1); } for (Direction dir = Direction.Begin; dir <= Direction.End; ++dir) { if (kDir != ExDir(dir)) { Bounds next = b.GetLink(dir); SearchRiver(call, dir, next); } } } }