diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | 62 |
1 files changed, 41 insertions, 21 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 4319fa0..a634f1c 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -329,28 +329,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
329 | 329 | ||
330 | responseData["accepted"] = true; | 330 | responseData["accepted"] = true; |
331 | 331 | ||
332 | Scene region = null; | 332 | LoadHeightmap(file, regionID); |
333 | 333 | ||
334 | if (!m_application.SceneManager.TryGetScene(regionID, out region)) | ||
335 | throw new Exception("1: unable to get a scene with that name"); | ||
336 | |||
337 | ITerrainModule terrainModule = region.RequestModuleInterface<ITerrainModule>(); | ||
338 | if (null == terrainModule) throw new Exception("terrain module not available"); | ||
339 | if (Uri.IsWellFormedUriString(file, UriKind.Absolute)) | ||
340 | { | ||
341 | m_log.Info("[RADMIN]: Terrain path is URL"); | ||
342 | Uri result; | ||
343 | if (Uri.TryCreate(file, UriKind.RelativeOrAbsolute, out result)) | ||
344 | { | ||
345 | // the url is valid | ||
346 | string fileType = file.Substring(file.LastIndexOf('/') + 1); | ||
347 | terrainModule.LoadFromStream(fileType, result); | ||
348 | } | ||
349 | } | ||
350 | else | ||
351 | { | ||
352 | terrainModule.LoadFromFile(file); | ||
353 | } | ||
354 | responseData["success"] = false; | 334 | responseData["success"] = false; |
355 | 335 | ||
356 | response.Value = responseData; | 336 | response.Value = responseData; |
@@ -793,6 +773,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
793 | } | 773 | } |
794 | } | 774 | } |
795 | 775 | ||
776 | //Load Heightmap if specified to new region | ||
777 | if (requestData.Contains("heightmap_file")) | ||
778 | { | ||
779 | LoadHeightmap((string)requestData["heightmap_file"], region.RegionID); | ||
780 | } | ||
781 | |||
796 | responseData["success"] = true; | 782 | responseData["success"] = true; |
797 | responseData["region_name"] = region.RegionName; | 783 | responseData["region_name"] = region.RegionName; |
798 | responseData["region_uuid"] = region.RegionID.ToString(); | 784 | responseData["region_uuid"] = region.RegionID.ToString(); |
@@ -3158,5 +3144,39 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
3158 | return false; | 3144 | return false; |
3159 | } | 3145 | } |
3160 | } | 3146 | } |
3147 | private bool LoadHeightmap(string file, UUID regionID) | ||
3148 | { | ||
3149 | m_log.InfoFormat("[RADMIN]: Terrain Loading: {0}", file); | ||
3150 | |||
3151 | Scene region = null; | ||
3152 | |||
3153 | if (!m_application.SceneManager.TryGetScene(regionID, out region)) | ||
3154 | { | ||
3155 | m_log.InfoFormat("[RADMIN]: unable to get a scene with that name: {0}", regionID.ToString()); | ||
3156 | return false; | ||
3157 | } | ||
3158 | |||
3159 | ITerrainModule terrainModule = region.RequestModuleInterface<ITerrainModule>(); | ||
3160 | if (null == terrainModule) throw new Exception("terrain module not available"); | ||
3161 | if (Uri.IsWellFormedUriString(file, UriKind.Absolute)) | ||
3162 | { | ||
3163 | m_log.Info("[RADMIN]: Terrain path is URL"); | ||
3164 | Uri result; | ||
3165 | if (Uri.TryCreate(file, UriKind.RelativeOrAbsolute, out result)) | ||
3166 | { | ||
3167 | // the url is valid | ||
3168 | string fileType = file.Substring(file.LastIndexOf('/') + 1); | ||
3169 | terrainModule.LoadFromStream(fileType, result); | ||
3170 | } | ||
3171 | } | ||
3172 | else | ||
3173 | { | ||
3174 | terrainModule.LoadFromFile(file); | ||
3175 | } | ||
3176 | |||
3177 | m_log.Info("[RADMIN]: Load height maps request complete"); | ||
3178 | |||
3179 | return true; | ||
3180 | } | ||
3161 | } | 3181 | } |
3162 | } \ No newline at end of file | 3182 | } \ No newline at end of file |