diff options
Diffstat (limited to 'OpenSim.Terrain.BasicTerrain')
3 files changed, 46 insertions, 0 deletions
diff --git a/OpenSim.Terrain.BasicTerrain/OpenSim.Terrain.BasicTerrain.csproj b/OpenSim.Terrain.BasicTerrain/OpenSim.Terrain.BasicTerrain.csproj index 1cdfaf6..5a73897 100644 --- a/OpenSim.Terrain.BasicTerrain/OpenSim.Terrain.BasicTerrain.csproj +++ b/OpenSim.Terrain.BasicTerrain/OpenSim.Terrain.BasicTerrain.csproj | |||
@@ -66,6 +66,10 @@ | |||
66 | <HintPath>System.dll</HintPath> | 66 | <HintPath>System.dll</HintPath> |
67 | <Private>False</Private> | 67 | <Private>False</Private> |
68 | </Reference> | 68 | </Reference> |
69 | <Reference Include="System.Drawing" > | ||
70 | <HintPath>System.Drawing.dll</HintPath> | ||
71 | <Private>False</Private> | ||
72 | </Reference> | ||
69 | <Reference Include="System.Data" > | 73 | <Reference Include="System.Data" > |
70 | <HintPath>System.Data.dll</HintPath> | 74 | <HintPath>System.Data.dll</HintPath> |
71 | <Private>False</Private> | 75 | <Private>False</Private> |
diff --git a/OpenSim.Terrain.BasicTerrain/OpenSim.Terrain.BasicTerrain.dll.build b/OpenSim.Terrain.BasicTerrain/OpenSim.Terrain.BasicTerrain.dll.build index d2e6c9f..86c6a5c 100644 --- a/OpenSim.Terrain.BasicTerrain/OpenSim.Terrain.BasicTerrain.dll.build +++ b/OpenSim.Terrain.BasicTerrain/OpenSim.Terrain.BasicTerrain.dll.build | |||
@@ -21,6 +21,7 @@ | |||
21 | </lib> | 21 | </lib> |
22 | <include name="../bin/libTerrain-BSD.dll" /> | 22 | <include name="../bin/libTerrain-BSD.dll" /> |
23 | <include name="System.dll" /> | 23 | <include name="System.dll" /> |
24 | <include name="System.Drawing.dll" /> | ||
24 | <include name="System.Data.dll" /> | 25 | <include name="System.Data.dll" /> |
25 | <include name="System.Xml.dll" /> | 26 | <include name="System.Xml.dll" /> |
26 | </references> | 27 | </references> |
diff --git a/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs b/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs index 38a4989..e766f71 100644 --- a/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs +++ b/OpenSim.Terrain.BasicTerrain/TerrainEngine.cs | |||
@@ -1,6 +1,7 @@ | |||
1 | using System; | 1 | using System; |
2 | using System.Collections.Generic; | 2 | using System.Collections.Generic; |
3 | using System.Text; | 3 | using System.Text; |
4 | using System.Drawing; | ||
4 | using libTerrain; | 5 | using libTerrain; |
5 | 6 | ||
6 | namespace OpenSim.Terrain | 7 | namespace OpenSim.Terrain |
@@ -403,5 +404,45 @@ namespace OpenSim.Terrain | |||
403 | heightmap.set(x,y,(double)value); | 404 | heightmap.set(x,y,(double)value); |
404 | } | 405 | } |
405 | } | 406 | } |
407 | |||
408 | /// <summary> | ||
409 | /// Exports the current heightmap to a PNG file | ||
410 | /// </summary> | ||
411 | /// <param name="filename">The destination filename for the image</param> | ||
412 | /// <param name="gradientmap">A 1x*height* image which contains the colour gradient to export with. Must be at least 1x2 pixels, 1x256 or more is ideal.</param> | ||
413 | public void exportImage(string filename, string gradientmap) | ||
414 | { | ||
415 | try | ||
416 | { | ||
417 | Bitmap gradientmapLd = new Bitmap(gradientmap); | ||
418 | |||
419 | int pallete = gradientmapLd.Width; | ||
420 | |||
421 | Bitmap bmp = new Bitmap(heightmap.w, heightmap.h); | ||
422 | Color[] colours = new Color[pallete]; | ||
423 | |||
424 | for (int i = 0; i < pallete; i++) | ||
425 | { | ||
426 | colours[i] = gradientmapLd.GetPixel(1, i); | ||
427 | } | ||
428 | |||
429 | Channel copy = heightmap.copy(); | ||
430 | for (int x = 0; x < copy.w; x++) | ||
431 | { | ||
432 | for (int y = 0; y < copy.h; y++) | ||
433 | { | ||
434 | // 512 is the largest possible height before colours clamp | ||
435 | int colorindex = (int)(Math.Max(Math.Min(1.0, copy.get(x, y) / 512.0), 0.0) * pallete); | ||
436 | bmp.SetPixel(x, y, colours[colorindex]); | ||
437 | } | ||
438 | } | ||
439 | |||
440 | bmp.Save(filename, System.Drawing.Imaging.ImageFormat.Png); | ||
441 | } | ||
442 | catch (Exception e) | ||
443 | { | ||
444 | Console.WriteLine("Failed generating terrain map: " + e.ToString()); | ||
445 | } | ||
446 | } | ||
406 | } | 447 | } |
407 | } | 448 | } |