Changeset - r12126:651317b20e1e
[Not reviewed]
master
0 1 0
smatz - 15 years ago 2009-06-09 23:34:48
smatz@openttd.org
(svn r16547) -Codechange: make CircularTileSearch a tiny bit faster
1 file changed with 10 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/map.cpp
Show inline comments
 
@@ -307,12 +307,17 @@ bool CircularTileSearch(TileIndex *tile,
 
	uint extent[DIAGDIR_END] = { w, h, w, h };
 

	
 
	for (uint n = 0; n < radius; n++) {
 
		for (DiagDirection dir = DIAGDIR_NE; dir < DIAGDIR_END; dir++) {
 
		for (DiagDirection dir = DIAGDIR_BEGIN; dir < DIAGDIR_END; dir++) {
 
			/* Is the tile within the map? */
 
			for (uint j = extent[dir] + n * 2 + 1; j != 0; j--) {
 
				if (x <= MapMaxX() && y <= MapMaxY() && ///< Is the tile within the map?
 
						proc(TileXY(x, y), user_data)) {     ///< Is the callback successful?
 
					*tile = TileXY(x, y);
 
					return true;                        ///< then stop the search
 
				if (x < MapSizeX() && y < MapSizeY()) {
 
					TileIndex t = TileXY(x, y);
 
					/* Is the callback successful? */
 
					if (proc(t, user_data)) {
 
						/* Stop the search */
 
						*tile = t;
 
						return true;
 
					}
 
				}
 

	
 
				/* Step to the next 'neighbour' in the circular line */
0 comments (0 inline, 0 general)