diff options
11 files changed, 74 insertions, 3 deletions
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/BMP.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/BMP.cs index 90f124b..fb57c82 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/BMP.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/BMP.cs | |||
@@ -72,5 +72,11 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
72 | { | 72 | { |
73 | return "BMP"; | 73 | return "BMP"; |
74 | } | 74 | } |
75 | |||
76 | //Returns true if this extension is supported for terrain save-tile | ||
77 | public override bool SupportsTileSave() | ||
78 | { | ||
79 | return false; | ||
80 | } | ||
75 | } | 81 | } |
76 | } | 82 | } |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GIF.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GIF.cs index f331b56..79cc50b 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GIF.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GIF.cs | |||
@@ -57,5 +57,11 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
57 | { | 57 | { |
58 | return "GIF"; | 58 | return "GIF"; |
59 | } | 59 | } |
60 | |||
61 | //Returns true if this extension is supported for terrain save-tile | ||
62 | public override bool SupportsTileSave() | ||
63 | { | ||
64 | return false; | ||
65 | } | ||
60 | } | 66 | } |
61 | } | 67 | } |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs index 58925fd..da81dc1 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs | |||
@@ -177,6 +177,12 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
177 | return "SYS.DRAWING"; | 177 | return "SYS.DRAWING"; |
178 | } | 178 | } |
179 | 179 | ||
180 | //Returns true if this extension is supported for terrain save-tile | ||
181 | public virtual bool SupportsTileSave() | ||
182 | { | ||
183 | return false; | ||
184 | } | ||
185 | |||
180 | /// <summary> | 186 | /// <summary> |
181 | /// Protected method, generates a grayscale bitmap | 187 | /// Protected method, generates a grayscale bitmap |
182 | /// image from a specified terrain channel. | 188 | /// image from a specified terrain channel. |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/JPEG.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/JPEG.cs index 1a0d8ec..699d67a 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/JPEG.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/JPEG.cs | |||
@@ -91,6 +91,12 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
91 | return "JPEG"; | 91 | return "JPEG"; |
92 | } | 92 | } |
93 | 93 | ||
94 | //Returns true if this extension is supported for terrain save-tile | ||
95 | public bool SupportsTileSave() | ||
96 | { | ||
97 | return false; | ||
98 | } | ||
99 | |||
94 | private static Bitmap CreateBitmapFromMap(ITerrainChannel map) | 100 | private static Bitmap CreateBitmapFromMap(ITerrainChannel map) |
95 | { | 101 | { |
96 | Bitmap gradientmapLd = new Bitmap("defaultstripe.png"); | 102 | Bitmap gradientmapLd = new Bitmap("defaultstripe.png"); |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/LLRAW.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/LLRAW.cs index fad7641..62d232e 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/LLRAW.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/LLRAW.cs | |||
@@ -254,5 +254,12 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
254 | { | 254 | { |
255 | return "LL/SL RAW"; | 255 | return "LL/SL RAW"; |
256 | } | 256 | } |
257 | |||
258 | //Returns true if this extension is supported for terrain save-tile | ||
259 | public bool SupportsTileSave() | ||
260 | { | ||
261 | return false; | ||
262 | } | ||
263 | |||
257 | } | 264 | } |
258 | } | 265 | } |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/PNG.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/PNG.cs index e009ecf..c5c12ae 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/PNG.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/PNG.cs | |||
@@ -57,5 +57,11 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
57 | { | 57 | { |
58 | return "PNG"; | 58 | return "PNG"; |
59 | } | 59 | } |
60 | |||
61 | //Returns true if this extension is supported for terrain save-tile | ||
62 | public override bool SupportsTileSave() | ||
63 | { | ||
64 | return true; | ||
65 | } | ||
60 | } | 66 | } |
61 | } | 67 | } |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs index ba073ca..9fb7ef7 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs | |||
@@ -173,5 +173,11 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
173 | { | 173 | { |
174 | return "RAW32"; | 174 | return "RAW32"; |
175 | } | 175 | } |
176 | |||
177 | //Returns true if this extension is supported for terrain save-tile | ||
178 | public bool SupportsTileSave() | ||
179 | { | ||
180 | return false; | ||
181 | } | ||
176 | } | 182 | } |
177 | } | 183 | } |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/TIFF.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/TIFF.cs index fc1ad33..5d2f893 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/TIFF.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/TIFF.cs | |||
@@ -57,5 +57,11 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
57 | { | 57 | { |
58 | return "TIFF"; | 58 | return "TIFF"; |
59 | } | 59 | } |
60 | |||
61 | //Returns true if this extension is supported for terrain save-tile | ||
62 | public bool SupportsTileSave() | ||
63 | { | ||
64 | return false; | ||
65 | } | ||
60 | } | 66 | } |
61 | } | 67 | } |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/Terragen.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/Terragen.cs index 2f37d9d..1ebf916 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/Terragen.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/Terragen.cs | |||
@@ -323,6 +323,12 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
323 | return "Terragen"; | 323 | return "Terragen"; |
324 | } | 324 | } |
325 | 325 | ||
326 | //Returns true if this extension is supported for terrain save-tile | ||
327 | public bool SupportsTileSave() | ||
328 | { | ||
329 | return false; | ||
330 | } | ||
331 | |||
326 | /// <summary> | 332 | /// <summary> |
327 | /// terragen SCAL floats need to be written intel ordered regardless of | 333 | /// terragen SCAL floats need to be written intel ordered regardless of |
328 | /// big or little endian system | 334 | /// big or little endian system |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/ITerrainLoader.cs b/OpenSim/Region/CoreModules/World/Terrain/ITerrainLoader.cs index d407617..3ba3657 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/ITerrainLoader.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/ITerrainLoader.cs | |||
@@ -32,6 +32,10 @@ namespace OpenSim.Region.CoreModules.World.Terrain | |||
32 | { | 32 | { |
33 | public interface ITerrainLoader | 33 | public interface ITerrainLoader |
34 | { | 34 | { |
35 | // Returns true if that extension can be used for terrain save-tile | ||
36 | // (Look into each file in Region.CoreModules.World.Terrain.FileLoaders) | ||
37 | bool SupportsTileSave(); | ||
38 | |||
35 | string FileExtension { get; } | 39 | string FileExtension { get; } |
36 | ITerrainChannel LoadFile(string filename); | 40 | ITerrainChannel LoadFile(string filename); |
37 | ITerrainChannel LoadFile(string filename, int fileStartX, int fileStartY, int fileWidth, int fileHeight, int sectionWidth, int sectionHeight); | 41 | ITerrainChannel LoadFile(string filename, int fileStartX, int fileStartY, int fileWidth, int fileHeight, int sectionWidth, int sectionHeight); |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs index b3c2969..8535a5a 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs | |||
@@ -93,6 +93,9 @@ namespace OpenSim.Region.CoreModules.World.Terrain | |||
93 | /// </summary> | 93 | /// </summary> |
94 | private string m_supportedFileExtensions = ""; | 94 | private string m_supportedFileExtensions = ""; |
95 | 95 | ||
96 | //For terrain save-tile file extensions | ||
97 | private string m_supportFileExtensionsForTileSave = ""; | ||
98 | |||
96 | #region ICommandableModule Members | 99 | #region ICommandableModule Members |
97 | 100 | ||
98 | public ICommander CommandInterface | 101 | public ICommander CommandInterface |
@@ -148,11 +151,20 @@ namespace OpenSim.Region.CoreModules.World.Terrain | |||
148 | 151 | ||
149 | // Generate user-readable extensions list | 152 | // Generate user-readable extensions list |
150 | string supportedFilesSeparator = ""; | 153 | string supportedFilesSeparator = ""; |
154 | string supportedFilesSeparatorForTileSave = ""; | ||
151 | 155 | ||
156 | m_supportFileExtensionsForTileSave = ""; | ||
152 | foreach (KeyValuePair<string, ITerrainLoader> loader in m_loaders) | 157 | foreach (KeyValuePair<string, ITerrainLoader> loader in m_loaders) |
153 | { | 158 | { |
154 | m_supportedFileExtensions += supportedFilesSeparator + loader.Key + " (" + loader.Value + ")"; | 159 | m_supportedFileExtensions += supportedFilesSeparator + loader.Key + " (" + loader.Value + ")"; |
155 | supportedFilesSeparator = ", "; | 160 | supportedFilesSeparator = ", "; |
161 | |||
162 | //For terrain save-tile file extensions | ||
163 | if (loader.Value.SupportsTileSave() == true) | ||
164 | { | ||
165 | m_supportFileExtensionsForTileSave += supportedFilesSeparatorForTileSave + loader.Key + " (" + loader.Value + ")"; | ||
166 | supportedFilesSeparatorForTileSave = ", "; | ||
167 | } | ||
156 | } | 168 | } |
157 | } | 169 | } |
158 | 170 | ||
@@ -589,7 +601,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain | |||
589 | // this region is included in the tile request | 601 | // this region is included in the tile request |
590 | foreach (KeyValuePair<string, ITerrainLoader> loader in m_loaders) | 602 | foreach (KeyValuePair<string, ITerrainLoader> loader in m_loaders) |
591 | { | 603 | { |
592 | if (filename.EndsWith(loader.Key)) | 604 | if (filename.EndsWith(loader.Key) && loader.Value.SupportsTileSave()) |
593 | { | 605 | { |
594 | lock (m_scene) | 606 | lock (m_scene) |
595 | { | 607 | { |
@@ -610,7 +622,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain | |||
610 | 622 | ||
611 | MainConsole.Instance.OutputFormat( | 623 | MainConsole.Instance.OutputFormat( |
612 | "ERROR: Could not save terrain from {0} to {1}. Valid file extensions are {2}", | 624 | "ERROR: Could not save terrain from {0} to {1}. Valid file extensions are {2}", |
613 | m_scene.RegionInfo.RegionName, filename, m_supportedFileExtensions); | 625 | m_scene.RegionInfo.RegionName, filename, m_supportFileExtensionsForTileSave); |
614 | } | 626 | } |
615 | 627 | ||
616 | /// <summary> | 628 | /// <summary> |
@@ -1192,7 +1204,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain | |||
1192 | new Command("save-tile", CommandIntentions.COMMAND_HAZARDOUS, InterfaceSaveTileFile, "Saves the current heightmap to the larger file."); | 1204 | new Command("save-tile", CommandIntentions.COMMAND_HAZARDOUS, InterfaceSaveTileFile, "Saves the current heightmap to the larger file."); |
1193 | saveToTileCommand.AddArgument("filename", | 1205 | saveToTileCommand.AddArgument("filename", |
1194 | "The file you wish to save to, the file extension determines the loader to be used. Supported extensions include: " + | 1206 | "The file you wish to save to, the file extension determines the loader to be used. Supported extensions include: " + |
1195 | m_supportedFileExtensions, "String"); | 1207 | m_supportFileExtensionsForTileSave, "String"); |
1196 | saveToTileCommand.AddArgument("file width", "The width of the file in tiles", "Integer"); | 1208 | saveToTileCommand.AddArgument("file width", "The width of the file in tiles", "Integer"); |
1197 | saveToTileCommand.AddArgument("file height", "The height of the file in tiles", "Integer"); | 1209 | saveToTileCommand.AddArgument("file height", "The height of the file in tiles", "Integer"); |
1198 | saveToTileCommand.AddArgument("minimum X tile", "The X region coordinate of the first section on the file", | 1210 | saveToTileCommand.AddArgument("minimum X tile", "The X region coordinate of the first section on the file", |