diff options
author | Robert Adams | 2014-02-03 21:21:29 -0800 |
---|---|---|
committer | Robert Adams | 2014-02-03 21:23:32 -0800 |
commit | 1b41ec0a85443b08b9ea8a33215deb9243cd7156 (patch) | |
tree | 4f48c95019cf10b59daca9d6e87297807000adc5 /OpenSim/Region | |
parent | Add one check for a blank URL because the module wasn't quite sure not to wor... (diff) | |
download | opensim-SC_OLD-1b41ec0a85443b08b9ea8a33215deb9243cd7156.zip opensim-SC_OLD-1b41ec0a85443b08b9ea8a33215deb9243cd7156.tar.gz opensim-SC_OLD-1b41ec0a85443b08b9ea8a33215deb9243cd7156.tar.bz2 opensim-SC_OLD-1b41ec0a85443b08b9ea8a33215deb9243cd7156.tar.xz |
Fix raw32 terrain heightmap reader so it estimates terrain size from
the size of the input stream. This is required since the raw heightmap
format (.r32) does not contain any size information.
The estimation relies on terrain being square.
Diffstat (limited to 'OpenSim/Region')
3 files changed, 17 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs index 9fb7ef7..d467abb 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs | |||
@@ -25,7 +25,10 @@ | |||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | ||
28 | using System.IO; | 29 | using System.IO; |
30 | |||
31 | using OpenSim.Framework; | ||
29 | using OpenSim.Region.Framework.Interfaces; | 32 | using OpenSim.Region.Framework.Interfaces; |
30 | using OpenSim.Region.Framework.Scenes; | 33 | using OpenSim.Region.Framework.Scenes; |
31 | 34 | ||
@@ -116,7 +119,15 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
116 | 119 | ||
117 | public ITerrainChannel LoadStream(Stream s) | 120 | public ITerrainChannel LoadStream(Stream s) |
118 | { | 121 | { |
119 | TerrainChannel retval = new TerrainChannel(); | 122 | // The raw format doesn't contain any dimension information. |
123 | // Guess the square dimensions by using the length of the raw file. | ||
124 | double dimension = Math.Sqrt((double)(s.Length / 4)); | ||
125 | // Regions are always multiples of 256. | ||
126 | int trimmedDimension = (int)dimension - ((int)dimension % (int)Constants.RegionSize); | ||
127 | if (trimmedDimension < Constants.RegionSize) | ||
128 | trimmedDimension = (int)Constants.RegionSize; | ||
129 | |||
130 | TerrainChannel retval = new TerrainChannel(trimmedDimension, trimmedDimension); | ||
120 | 131 | ||
121 | BinaryReader bs = new BinaryReader(s); | 132 | BinaryReader bs = new BinaryReader(s); |
122 | int y; | 133 | int y; |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/Tests/TerrainTest.cs b/OpenSim/Region/CoreModules/World/Terrain/Tests/TerrainTest.cs index 96c16a9..29e80ef 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/Tests/TerrainTest.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/Tests/TerrainTest.cs | |||
@@ -80,7 +80,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain.Tests | |||
80 | effect = new LowerSphere(); | 80 | effect = new LowerSphere(); |
81 | 81 | ||
82 | effect.PaintEffect(map, allowMask, midRegion, midRegion, -1.0, 2, 6.0); | 82 | effect.PaintEffect(map, allowMask, midRegion, midRegion, -1.0, 2, 6.0); |
83 | Assert.That(map[127, midRegion] >= 0.0, "Lower should not lowering value below 0.0 at this point (127,128)."); | 83 | Assert.That(map[127, midRegion] >= 0.0, "Lower should not lowering value below 0.0 at this point (127,128)."); |
84 | Assert.That(map[127, midRegion] == 0.0, "Lower brush should lowering value to 0.0 at this point (127,128)."); | 84 | Assert.That(map[127, midRegion] == 0.0, "Lower brush should lowering value to 0.0 at this point (127,128)."); |
85 | Assert.That(map[125, midRegion] < 1.0, "Lower brush should lowering value at this point (124,128)."); | 85 | Assert.That(map[125, midRegion] < 1.0, "Lower brush should lowering value at this point (124,128)."); |
86 | Assert.That(map[120, midRegion] == 1.0, "Lower brush should not change value at this point (120,128)."); | 86 | Assert.That(map[120, midRegion] == 1.0, "Lower brush should not change value at this point (120,128)."); |
diff --git a/OpenSim/Region/Framework/Scenes/TerrainChannel.cs b/OpenSim/Region/Framework/Scenes/TerrainChannel.cs index 24709dc..60dc6c9 100644 --- a/OpenSim/Region/Framework/Scenes/TerrainChannel.cs +++ b/OpenSim/Region/Framework/Scenes/TerrainChannel.cs | |||
@@ -217,6 +217,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
217 | // ITerrainChannel.Merge | 217 | // ITerrainChannel.Merge |
218 | public void Merge(ITerrainChannel newTerrain, Vector3 displacement, float radianRotation, Vector2 rotationDisplacement) | 218 | public void Merge(ITerrainChannel newTerrain, Vector3 displacement, float radianRotation, Vector2 rotationDisplacement) |
219 | { | 219 | { |
220 | m_log.DebugFormat("{0} Merge. inSize=<{1},{2}>, disp={3}, rot={4}, rotDisp={5}, outSize=<{6},{7}>", LogHeader, | ||
221 | newTerrain.Width, newTerrain.Height, | ||
222 | displacement, radianRotation, rotationDisplacement, | ||
223 | m_terrainData.SizeX, m_terrainData.SizeY); | ||
220 | for (int xx = 0; xx < newTerrain.Width; xx++) | 224 | for (int xx = 0; xx < newTerrain.Width; xx++) |
221 | { | 225 | { |
222 | for (int yy = 0; yy < newTerrain.Height; yy++) | 226 | for (int yy = 0; yy < newTerrain.Height; yy++) |