From ac4793dd0d7942846b76d307c3d048e9b316954f Mon Sep 17 00:00:00 2001 From: onefang Date: Thu, 10 Sep 2020 21:27:22 +1000 Subject: Various map generation tweaks. Fix up Warp3DCachedImageModule to work with my directory structure. Remove some excess code from it. Clean up maptile directory creation code. When the generate map command is given, generate the map. The month check seems a bit dodgy, but I'll let it ride for now. --- .../CoreModules/World/LegacyMap/MapImageModule.cs | 5 +++++ .../World/Warp3DMap/Warp3DImageModule.cs | 18 ++++++++++----- .../CoreModules/World/WorldMap/WorldMapModule.cs | 26 +++++++++++++++++++++- OpenSim/Region/Framework/Interfaces/ITerrain.cs | 1 + 4 files changed, 44 insertions(+), 6 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs b/OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs index ce82c26..f45161d 100644 --- a/OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs +++ b/OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs @@ -73,6 +73,11 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap #region IMapImageGenerator Members + public Bitmap CreateMapTileForce() + { + return CreateMapTile(); + } + public Bitmap CreateMapTile() { bool drawPrimVolume = true; diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs index ce5e167..fc09f32 100644 --- a/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs +++ b/OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs @@ -149,9 +149,9 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap List renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory()); if (renderers.Count > 0) - m_log.Info("[MAPTILE]: Loaded prim mesher " + renderers[0]); + m_log.Info("[WARP 3D IMAGE MODULE]: Loaded prim mesher " + renderers[0]); else - m_log.Info("[MAPTILE]: No prim mesher loaded, prim rendering will be disabled"); + m_log.Info("[WARP 3D IMAGE MODULE]: No prim mesher loaded, prim rendering will be disabled"); m_scene.RegisterModuleInterface(this); } @@ -193,6 +193,13 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap private float fov; private bool orto; + public Bitmap CreateMapTileForce() + { + m_log.Info("[WARP 3D IMAGE MODULE]: Forcing a map tile regenerate."); + File.Delete(System.IO.Path.Combine(m_cacheDirectory,"MAP-" + m_scene.RegionInfo.RegionID.ToString() + ".png")); + return CreateMapTile(); + } + public Bitmap CreateMapTile() { List renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory()); @@ -217,6 +224,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap Bitmap tile = GenImage(); // image may be reloaded elsewhere, so no compression format string filename = System.IO.Path.Combine(m_cacheDirectory,"MAP-" + m_scene.RegionInfo.RegionID.ToString() + ".png"); + m_log.Info("[WARP 3D IMAGE MODULE]: Generating map tile " + filename); tile.Save(filename, ImageFormat.Png); m_primMesher = null; return tile; @@ -549,7 +557,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap } else { - m_log.WarnFormat("[Warp3D] failed to get mesh or sculpt asset {0} of prim {1} at {2}", + m_log.WarnFormat("[WARP 3D IMAGE MODULE] failed to get mesh or sculpt asset {0} of prim {1} at {2}", omvPrim.Sculpt.SculptTexture.ToString(), prim.Name, prim.GetWorldPosition().ToString()); } } @@ -805,11 +813,11 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap } catch (Exception e) { - m_log.WarnFormat("[Warp3D]: Failed to decode texture {0} for prim {1} at {2}, exception {3}", id.ToString(), sop.Name, sop.GetWorldPosition().ToString(), e.Message); + m_log.WarnFormat("[WARP 3D IMAGE MODULE]: Failed to decode texture {0} for prim {1} at {2}, exception {3}", id.ToString(), sop.Name, sop.GetWorldPosition().ToString(), e.Message); } } else - m_log.WarnFormat("[Warp3D]: missing texture {0} data for prim {1} at {2}", + m_log.WarnFormat("[WARP 3D IMAGE MODULE]: missing texture {0} data for prim {1} at {2}", id.ToString(), sop.Name, sop.GetWorldPosition().ToString()); m_warpTextures[id.ToString()] = ret; diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index 1dab18e..1d71857 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs @@ -1545,7 +1545,9 @@ namespace OpenSim.Region.CoreModules.World.WorldMap if (consoleScene != null && consoleScene != m_scene) return; - m_scene.RegenerateMaptileAndReregister(this, null); + GenerateMaptileForce(); +//// This used to be GenerateMaptile(); +//// m_scene.RegenerateMaptileAndReregister(this, null); } public OSD HandleRemoteMapItemRequest(string path, OSD request, string endpoint) @@ -1661,6 +1663,28 @@ namespace OpenSim.Region.CoreModules.World.WorldMap return responsemap; } + private void GenerateMaptileForce() + { + // Cannot create a map for a nonexistent heightmap + if (m_scene.Heightmap == null) + return; + + if (m_mapImageGenerator == null) + { + Console.WriteLine("No map image generator available for {0}", m_scene.Name); + return; + } + m_log.DebugFormat("[WORLD MAP]: Generating map image for {0}", m_scene.Name); + + using (Bitmap mapbmp = m_mapImageGenerator.CreateMapTileForce()) + { + GenerateMaptile(mapbmp); + + if (m_mapImageServiceModule != null) + m_mapImageServiceModule.UploadMapTile(m_scene, mapbmp); + } + } + public void GenerateMaptile() { // Cannot create a map for a nonexistent heightmap diff --git a/OpenSim/Region/Framework/Interfaces/ITerrain.cs b/OpenSim/Region/Framework/Interfaces/ITerrain.cs index 815a2d8..2fc954a 100644 --- a/OpenSim/Region/Framework/Interfaces/ITerrain.cs +++ b/OpenSim/Region/Framework/Interfaces/ITerrain.cs @@ -74,6 +74,7 @@ namespace OpenSim.Region.Framework.Interfaces public interface IMapImageGenerator { + System.Drawing.Bitmap CreateMapTileForce(); System.Drawing.Bitmap CreateMapTile(); System.Drawing.Bitmap CreateViewImage(Vector3 camPos, Vector3 camDir, float fov, int width, int height, bool useTextures); byte[] WriteJpeg2000Image(); -- cgit v1.1