diff --git a/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs b/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs index 2405e8655b..fdbbb5e55b 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs @@ -477,6 +477,7 @@ namespace OpenSim.Region.Terrain resultText += "terrain erode thermal \n"; resultText += "terrain erode hydraulic \n"; resultText += "terrain multiply - multiplies a terrain by \n"; + resultText += "terrain elevate - elevates a terrain by \n"; resultText += "terrain revert - reverts the terrain to the stored original\n"; resultText += "terrain bake - saves the current terrain into the revert map\n"; resultText += @@ -524,6 +525,10 @@ namespace OpenSim.Region.Terrain SetRange(Convert.ToSingle(args[1]), Convert.ToSingle(args[2])); break; + case "elevate": + Elevate(Convert.ToSingle(args[1])); + break; + case "fill": heightmap.Fill(Convert.ToDouble(args[1])); tainted++; @@ -765,6 +770,16 @@ namespace OpenSim.Region.Terrain tainted++; } + /// + /// Adds meters (positive or negative) to terrain height + /// + /// Positive or negative value to add to new array + public void Elevate(float meters) + { + heightmap.Elevate((double)meters); + tainted++; + } + /// /// Loads a file consisting of 256x256 doubles and imports it as an array into the map. /// diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Grid.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Grid.cs index 4ff8e78646..1a86572fd2 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Grid.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Grid.cs @@ -96,6 +96,24 @@ namespace libTerrain return this; } + public Channel Elevate(double meters) + { + SetDiff(); + + int x, y; + + for (x = 0; x < w; x++) + { + for (y = 0; y < h; y++) + { + map[x, y] += meters; + } + } + + return this; + } + + public Channel Clip() { int x, y;