diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Map/TerrainLogic.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Map/TerrainLogic.cpp index f2173b15e4b..845226f3f80 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Map/TerrainLogic.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Map/TerrainLogic.cpp @@ -2668,7 +2668,7 @@ void TerrainLogic::flattenTerrain(Object *obj) Real totalHeight = 0; Int numSamples = 0; for (i=iMin.x; i<=iMax.x; i++) { - for (j=0; j<=iMax.y; j++) { + for (j=MAX(0, iMin.y); j<=iMax.y; ++j) { Vector3 testPt(i*MAP_XY_FACTOR, j*MAP_XY_FACTOR, 0); Bool match = false; unsigned char flags; @@ -2694,7 +2694,7 @@ void TerrainLogic::flattenTerrain(Object *obj) if (rawDataHeight>centerHeight) rawDataHeight = centerHeight; for (i=iMin.x; i<=iMax.x; i++) { - for (j=0; j<=iMax.y; j++) { + for (j=MAX(0, iMin.y); j<=iMax.y; ++j) { Vector3 testPt(i*MAP_XY_FACTOR, j*MAP_XY_FACTOR, 0); Bool match = false; unsigned char flags; @@ -2759,7 +2759,7 @@ void TerrainLogic::flattenTerrain(Object *obj) Real totalHeight = 0; Int numSamples = 0; for (i=iMin.x; i<=iMax.x; i++) { - for (j=0; j<=iMax.y; j++) { + for (j=MAX(0, iMin.y); j<=iMax.y; ++j) { Vector3 testPt(i*MAP_XY_FACTOR, j*MAP_XY_FACTOR, 0); Bool match = false; Real dx = testPt.X - pos->x; @@ -2777,7 +2777,7 @@ void TerrainLogic::flattenTerrain(Object *obj) Real avgHeight = totalHeight/numSamples; Int rawDataHeight = REAL_TO_INT_FLOOR(0.5f + avgHeight/MAP_HEIGHT_SCALE); for (i=iMin.x; i<=iMax.x; i++) { - for (j=0; j<=iMax.y; j++) { + for (j=MAX(0, iMin.y); j<=iMax.y; ++j) { Vector3 testPt(i*MAP_XY_FACTOR, j*MAP_XY_FACTOR, 0); Bool match = false; Real dx = testPt.X - pos->x; @@ -2854,7 +2854,7 @@ void TerrainLogic::createCraterInTerrain(Object *obj) for (Int i = iMin.x; i <= iMax.x; i++ ) { - for ( Int j=0; j <= iMax.y; j++ ) + for ( Int j=MAX( 0, iMin.y ); j <= iMax.y; ++j ) { deltaX = ( i * MAP_XY_FACTOR ) - pos->x; deltaY = ( j * MAP_XY_FACTOR ) - pos->y;