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