aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authoronefang2020-09-10 21:27:22 +1000
committeronefang2020-09-10 21:27:22 +1000
commitac4793dd0d7942846b76d307c3d048e9b316954f (patch)
tree2a4269c0263fa65652094b7c0126b37e88e63794
parentWarp3DCachedImageModule from Christopher Latza. (diff)
downloadopensim-SC-ac4793dd0d7942846b76d307c3d048e9b316954f.zip
opensim-SC-ac4793dd0d7942846b76d307c3d048e9b316954f.tar.gz
opensim-SC-ac4793dd0d7942846b76d307c3d048e9b316954f.tar.bz2
opensim-SC-ac4793dd0d7942846b76d307c3d048e9b316954f.tar.xz
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.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs5
-rw-r--r--OpenSim/Region/CoreModules/World/Warp3DMap/Warp3DImageModule.cs18
-rw-r--r--OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs26
-rw-r--r--OpenSim/Region/Framework/Interfaces/ITerrain.cs1
-rw-r--r--OpenSim/Services/GridService/HypergridLinker.cs17
-rw-r--r--addon-modules/OpenSim.Modules.Warp3DCachedImageModule/src/Warp3DImageModule.cs354
-rw-r--r--bin/OpenSimDefaults.ini26
-rw-r--r--bin/config-include/SimBalanced.ini2
-rw-r--r--bin/config-include/SimDefault.ini6
9 files changed, 253 insertions, 202 deletions
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
73 73
74 #region IMapImageGenerator Members 74 #region IMapImageGenerator Members
75 75
76 public Bitmap CreateMapTileForce()
77 {
78 return CreateMapTile();
79 }
80
76 public Bitmap CreateMapTile() 81 public Bitmap CreateMapTile()
77 { 82 {
78 bool drawPrimVolume = true; 83 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
149 149
150 List<string> renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory()); 150 List<string> renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory());
151 if (renderers.Count > 0) 151 if (renderers.Count > 0)
152 m_log.Info("[MAPTILE]: Loaded prim mesher " + renderers[0]); 152 m_log.Info("[WARP 3D IMAGE MODULE]: Loaded prim mesher " + renderers[0]);
153 else 153 else
154 m_log.Info("[MAPTILE]: No prim mesher loaded, prim rendering will be disabled"); 154 m_log.Info("[WARP 3D IMAGE MODULE]: No prim mesher loaded, prim rendering will be disabled");
155 155
156 m_scene.RegisterModuleInterface<IMapImageGenerator>(this); 156 m_scene.RegisterModuleInterface<IMapImageGenerator>(this);
157 } 157 }
@@ -193,6 +193,13 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
193 private float fov; 193 private float fov;
194 private bool orto; 194 private bool orto;
195 195
196 public Bitmap CreateMapTileForce()
197 {
198 m_log.Info("[WARP 3D IMAGE MODULE]: Forcing a map tile regenerate.");
199 File.Delete(System.IO.Path.Combine(m_cacheDirectory,"MAP-" + m_scene.RegionInfo.RegionID.ToString() + ".png"));
200 return CreateMapTile();
201 }
202
196 public Bitmap CreateMapTile() 203 public Bitmap CreateMapTile()
197 { 204 {
198 List<string> renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory()); 205 List<string> renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory());
@@ -217,6 +224,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
217 Bitmap tile = GenImage(); 224 Bitmap tile = GenImage();
218 // image may be reloaded elsewhere, so no compression format 225 // image may be reloaded elsewhere, so no compression format
219 string filename = System.IO.Path.Combine(m_cacheDirectory,"MAP-" + m_scene.RegionInfo.RegionID.ToString() + ".png"); 226 string filename = System.IO.Path.Combine(m_cacheDirectory,"MAP-" + m_scene.RegionInfo.RegionID.ToString() + ".png");
227 m_log.Info("[WARP 3D IMAGE MODULE]: Generating map tile " + filename);
220 tile.Save(filename, ImageFormat.Png); 228 tile.Save(filename, ImageFormat.Png);
221 m_primMesher = null; 229 m_primMesher = null;
222 return tile; 230 return tile;
@@ -549,7 +557,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
549 } 557 }
550 else 558 else
551 { 559 {
552 m_log.WarnFormat("[Warp3D] failed to get mesh or sculpt asset {0} of prim {1} at {2}", 560 m_log.WarnFormat("[WARP 3D IMAGE MODULE] failed to get mesh or sculpt asset {0} of prim {1} at {2}",
553 omvPrim.Sculpt.SculptTexture.ToString(), prim.Name, prim.GetWorldPosition().ToString()); 561 omvPrim.Sculpt.SculptTexture.ToString(), prim.Name, prim.GetWorldPosition().ToString());
554 } 562 }
555 } 563 }
@@ -805,11 +813,11 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
805 } 813 }
806 catch (Exception e) 814 catch (Exception e)
807 { 815 {
808 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); 816 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);
809 } 817 }
810 } 818 }
811 else 819 else
812 m_log.WarnFormat("[Warp3D]: missing texture {0} data for prim {1} at {2}", 820 m_log.WarnFormat("[WARP 3D IMAGE MODULE]: missing texture {0} data for prim {1} at {2}",
813 id.ToString(), sop.Name, sop.GetWorldPosition().ToString()); 821 id.ToString(), sop.Name, sop.GetWorldPosition().ToString());
814 822
815 m_warpTextures[id.ToString()] = ret; 823 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
1545 if (consoleScene != null && consoleScene != m_scene) 1545 if (consoleScene != null && consoleScene != m_scene)
1546 return; 1546 return;
1547 1547
1548 m_scene.RegenerateMaptileAndReregister(this, null); 1548 GenerateMaptileForce();
1549//// This used to be GenerateMaptile();
1550//// m_scene.RegenerateMaptileAndReregister(this, null);
1549 } 1551 }
1550 1552
1551 public OSD HandleRemoteMapItemRequest(string path, OSD request, string endpoint) 1553 public OSD HandleRemoteMapItemRequest(string path, OSD request, string endpoint)
@@ -1661,6 +1663,28 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
1661 return responsemap; 1663 return responsemap;
1662 } 1664 }
1663 1665
1666 private void GenerateMaptileForce()
1667 {
1668 // Cannot create a map for a nonexistent heightmap
1669 if (m_scene.Heightmap == null)
1670 return;
1671
1672 if (m_mapImageGenerator == null)
1673 {
1674 Console.WriteLine("No map image generator available for {0}", m_scene.Name);
1675 return;
1676 }
1677 m_log.DebugFormat("[WORLD MAP]: Generating map image for {0}", m_scene.Name);
1678
1679 using (Bitmap mapbmp = m_mapImageGenerator.CreateMapTileForce())
1680 {
1681 GenerateMaptile(mapbmp);
1682
1683 if (m_mapImageServiceModule != null)
1684 m_mapImageServiceModule.UploadMapTile(m_scene, mapbmp);
1685 }
1686 }
1687
1664 public void GenerateMaptile() 1688 public void GenerateMaptile()
1665 { 1689 {
1666 // Cannot create a map for a nonexistent heightmap 1690 // 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
74 74
75 public interface IMapImageGenerator 75 public interface IMapImageGenerator
76 { 76 {
77 System.Drawing.Bitmap CreateMapTileForce();
77 System.Drawing.Bitmap CreateMapTile(); 78 System.Drawing.Bitmap CreateMapTile();
78 System.Drawing.Bitmap CreateViewImage(Vector3 camPos, Vector3 camDir, float fov, int width, int height, bool useTextures); 79 System.Drawing.Bitmap CreateViewImage(Vector3 camPos, Vector3 camDir, float fov, int width, int height, bool useTextures);
79 byte[] WriteJpeg2000Image(); 80 byte[] WriteJpeg2000Image();
diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs
index 3c7295a..1791098 100644
--- a/OpenSim/Services/GridService/HypergridLinker.cs
+++ b/OpenSim/Services/GridService/HypergridLinker.cs
@@ -109,17 +109,14 @@ namespace OpenSim.Services.GridService
109 109
110 m_log.Debug("[HYPERGRID LINKER]: Loaded all services..."); 110 m_log.Debug("[HYPERGRID LINKER]: Loaded all services...");
111 111
112 if (!string.IsNullOrEmpty(m_MapTileDirectory)) 112 try
113 { 113 {
114 try 114 Directory.CreateDirectory(m_MapTileDirectory);
115 { 115 }
116 Directory.CreateDirectory(m_MapTileDirectory); 116 catch (Exception e)
117 } 117 {
118 catch (Exception e) 118 m_log.WarnFormat("[HYPERGRID LINKER]: Could not create map tile storage directory {0}: {1}", m_MapTileDirectory, e);
119 { 119 m_MapTileDirectory = string.Empty;
120 m_log.WarnFormat("[HYPERGRID LINKER]: Could not create map tile storage directory {0}: {1}", m_MapTileDirectory, e);
121 m_MapTileDirectory = string.Empty;
122 }
123 } 120 }
124 121
125 if (MainConsole.Instance != null) 122 if (MainConsole.Instance != null)
diff --git a/addon-modules/OpenSim.Modules.Warp3DCachedImageModule/src/Warp3DImageModule.cs b/addon-modules/OpenSim.Modules.Warp3DCachedImageModule/src/Warp3DImageModule.cs
index 8e50a16..05d5ab2 100644
--- a/addon-modules/OpenSim.Modules.Warp3DCachedImageModule/src/Warp3DImageModule.cs
+++ b/addon-modules/OpenSim.Modules.Warp3DCachedImageModule/src/Warp3DImageModule.cs
@@ -42,8 +42,8 @@ using Mono.Addins;
42using OpenSim.Framework; 42using OpenSim.Framework;
43using OpenSim.Region.Framework.Interfaces; 43using OpenSim.Region.Framework.Interfaces;
44using OpenSim.Region.Framework.Scenes; 44using OpenSim.Region.Framework.Scenes;
45using OpenSim.Region.PhysicsModules.SharedBase; 45////using OpenSim.Region.PhysicsModules.SharedBase;
46using OpenSim.Services.Interfaces; 46////using OpenSim.Services.Interfaces;
47 47
48using OpenMetaverse; 48using OpenMetaverse;
49using OpenMetaverse.Assets; 49using OpenMetaverse.Assets;
@@ -52,18 +52,18 @@ using OpenMetaverse.Rendering;
52using OpenMetaverse.StructuredData; 52using OpenMetaverse.StructuredData;
53 53
54using WarpRenderer = Warp3D.Warp3D; 54using WarpRenderer = Warp3D.Warp3D;
55using System.Drawing.Drawing2D; 55using System.Drawing.Drawing2D;
56 56
57[assembly: Addin("Warp3DCachedImageModule", "1.1")] 57[assembly: Addin("Warp3DCachedImageModule", "1.1")]
58[assembly: AddinDependency("OpenSim.Region.Framework", OpenSim.VersionInfo.VersionNumber)] 58[assembly: AddinDependency("OpenSim.Region.Framework", OpenSim.VersionInfo.VersionNumber)]
59namespace OpenSim.Region.CoreModules.World.Warp3DMap 59namespace OpenSim.Region.CoreModules.World.Warp3DMap
60{ 60{
61 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "Warp3DCachedImageModule")] 61 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "Warp3DCachedImageModule")]
62 public class Warp3DImageModule : IMapImageGenerator, INonSharedRegionModule 62 public class Warp3DImageModule : IMapImageGenerator, INonSharedRegionModule
63 { 63 {
64 private static readonly Color4 WATER_COLOR = new Color4(29, 72, 96, 216); 64 private static readonly Color4 WATER_COLOR = new Color4(29, 72, 96, 216);
65 // private static readonly Color4 WATER_COLOR = new Color4(29, 72, 96, 128); 65 // private static readonly Color4 WATER_COLOR = new Color4(29, 72, 96, 128);
66 66
67 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 67 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
68 68
69#pragma warning disable 414 69#pragma warning disable 414
@@ -87,19 +87,19 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
87 private float m_texturePrimSize = 48f; // size of prim before we consider texturing it 87 private float m_texturePrimSize = 48f; // size of prim before we consider texturing it
88 private bool m_renderMeshes = false; // true if to render meshes rather than just bounding boxes 88 private bool m_renderMeshes = false; // true if to render meshes rather than just bounding boxes
89 private float m_renderMinHeight = -100f; 89 private float m_renderMinHeight = -100f;
90 private float m_renderMaxHeight = 4096f; 90 private float m_renderMaxHeight = 4096f;
91 91
92 private String m_cacheDirectory = ""; 92 private String m_cacheDirectory = "";
93 private bool m_enable_date = false; 93//// private bool m_enable_date = false;
94 private bool m_enable_regionName = false; 94//// private bool m_enable_regionName = false;
95 private bool m_enable_regionPosition = false; 95 private bool m_enable_regionPosition = false;
96 private bool m_enable_refreshEveryMonth = false; 96 private bool m_enable_refreshEveryMonth = false;
97 private bool m_enable_HostedBy = false; 97//// private bool m_enable_HostedBy = false;
98 private String m_enable_HostedByText = ""; 98//// private String m_enable_HostedByText = "";
99 99
100 private bool m_Enabled = false; 100 private bool m_Enabled = false;
101 101
102 // private Bitmap lastImage = null; 102 // private Bitmap lastImage = null;
103 private DateTime lastImageTime = DateTime.MinValue; 103 private DateTime lastImageTime = DateTime.MinValue;
104 104
105 #region Region Module interface 105 #region Region Module interface
@@ -129,22 +129,22 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
129 m_texturePrimSize = 129 m_texturePrimSize =
130 Util.GetConfigVarFromSections<float>(m_config, "TexturePrimSize", configSections, m_texturePrimSize); 130 Util.GetConfigVarFromSections<float>(m_config, "TexturePrimSize", configSections, m_texturePrimSize);
131 m_renderMeshes = 131 m_renderMeshes =
132 Util.GetConfigVarFromSections<bool>(m_config, "RenderMeshes", configSections, m_renderMeshes); 132 Util.GetConfigVarFromSections<bool>(m_config, "RenderMeshes", configSections, m_renderMeshes);
133 m_cacheDirectory = 133 m_cacheDirectory =
134 Util.GetConfigVarFromSections<string>(m_config, "CacheDirectory", configSections, System.IO.Path.Combine(new DirectoryInfo(".").FullName, "MapImageCache")); 134 Util.GetConfigVarFromSections<string>(m_config, "CacheDirectory", configSections, System.IO.Path.Combine(Util.cacheDir(), "MapImageCache"));
135 135
136 136
137 m_enable_date = Util.GetConfigVarFromSections<bool>(m_config, "enableDate", configSections, false); 137//// m_enable_date = Util.GetConfigVarFromSections<bool>(m_config, "enableDate", configSections, false);
138 m_enable_regionName = Util.GetConfigVarFromSections<bool>(m_config, "enableName", configSections, false); 138//// m_enable_regionName = Util.GetConfigVarFromSections<bool>(m_config, "enableName", configSections, false);
139 m_enable_regionPosition = Util.GetConfigVarFromSections<bool>(m_config, "enablePosition", configSections, false); 139 m_enable_regionPosition = Util.GetConfigVarFromSections<bool>(m_config, "enablePosition", configSections, false);
140 m_enable_refreshEveryMonth = Util.GetConfigVarFromSections<bool>(m_config, "RefreshEveryMonth", configSections, true); 140 m_enable_refreshEveryMonth = Util.GetConfigVarFromSections<bool>(m_config, "RefreshEveryMonth", configSections, true);
141 m_enable_HostedBy = Util.GetConfigVarFromSections<bool>(m_config, "enableHostedBy", configSections, false); 141//// m_enable_HostedBy = Util.GetConfigVarFromSections<bool>(m_config, "enableHostedBy", configSections, false);
142 m_enable_HostedByText = Util.GetConfigVarFromSections<String>(m_config, "HosterText", configSections, String.Empty); 142//// m_enable_HostedByText = Util.GetConfigVarFromSections<String>(m_config, "HosterText", configSections, String.Empty);
143 143
144 m_renderMaxHeight = Util.GetConfigVarFromSections<float>(m_config, "RenderMaxHeight", configSections, m_renderMaxHeight); 144 m_renderMaxHeight = Util.GetConfigVarFromSections<float>(m_config, "RenderMaxHeight", configSections, m_renderMaxHeight);
145 m_renderMinHeight = Util.GetConfigVarFromSections<float>(m_config, "RenderMinHeight", configSections, m_renderMinHeight); 145 m_renderMinHeight = Util.GetConfigVarFromSections<float>(m_config, "RenderMinHeight", configSections, m_renderMinHeight);
146 146
147 if (!Directory.Exists(m_cacheDirectory)) 147 if (!Directory.Exists(m_cacheDirectory))
148 Directory.CreateDirectory(m_cacheDirectory); 148 Directory.CreateDirectory(m_cacheDirectory);
149 149
150 if (m_renderMaxHeight < 100f) 150 if (m_renderMaxHeight < 100f)
@@ -167,9 +167,9 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
167 167
168 List<string> renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory()); 168 List<string> renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory());
169 if (renderers.Count > 0) 169 if (renderers.Count > 0)
170 m_log.Info("[MAPTILE]: Loaded prim mesher " + renderers[0]); 170 m_log.Info("[WARP 3D CACHED IMAGE MODULE]: Loaded prim mesher " + renderers[0]);
171 else 171 else
172 m_log.Info("[MAPTILE]: No prim mesher loaded, prim rendering will be disabled"); 172 m_log.Info("[WARP 3D CACHED IMAGE MODULE]: No prim mesher loaded, prim rendering will be disabled");
173 173
174 m_scene.RegisterModuleInterface<IMapImageGenerator>(this); 174 m_scene.RegisterModuleInterface<IMapImageGenerator>(this);
175 } 175 }
@@ -192,7 +192,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
192 192
193 public string Name 193 public string Name
194 { 194 {
195 get { return "Warp3DImageModule"; } 195 get { return "Warp3DCachedImageModule"; }
196 } 196 }
197 197
198 public Type ReplaceableInterface 198 public Type ReplaceableInterface
@@ -209,134 +209,150 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
209 private int viewWitdh = 256; 209 private int viewWitdh = 256;
210 private int viewHeight = 256; 210 private int viewHeight = 256;
211 private float fov; 211 private float fov;
212 private bool orto; 212 private bool orto;
213 213
214 public static string fillInt(int _i, int _l) 214/*
215 { 215 public static string fillInt(int _i, int _l)
216 String _return = _i.ToString(); 216 {
217 217 String _return = _i.ToString();
218 while (_return.Length < _l) 218
219 { 219 while (_return.Length < _l)
220 _return = 0 + _return; 220 {
221 } 221 _return = 0 + _return;
222 222 }
223 return _return; 223
224 } 224 return _return;
225 225 }
226 public static int getCurrentUnixTime() 226
227 { 227 public static int getCurrentUnixTime()
228 return (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; 228 {
229 } 229 return (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
230 230 }
231 public static String unixTimeToDateString(int unixTime)
232 {
233 DateTime unixStart = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
234 long unixTimeStampInTicks = (long)(unixTime * TimeSpan.TicksPerSecond);
235 DateTime _date = new DateTime(unixStart.Ticks + unixTimeStampInTicks, System.DateTimeKind.Utc);
236
237 return fillInt(_date.Day, 2) + "." + fillInt(_date.Month, 2) + "." + fillInt(_date.Year, 4) + " " + fillInt(_date.Hour, 2) + ":" + fillInt(_date.Minute, 2);
238 }
239
240 private void writeDateOnMap(ref Bitmap _map)
241 {
242 RectangleF rectf = new RectangleF(2, 1, 200, 25);
243
244 Graphics g = Graphics.FromImage(_map);
245 g.SmoothingMode = SmoothingMode.AntiAlias;
246 g.InterpolationMode = InterpolationMode.HighQualityBicubic;
247 g.PixelOffsetMode = PixelOffsetMode.HighQuality;
248 g.DrawString(unixTimeToDateString(getCurrentUnixTime()), new Font("Arial", 8), Brushes.White, rectf);
249 g.Flush();
250 }
251
252 private void writeNameOnMap(ref Bitmap _map)
253 {
254 RectangleF rectf = new RectangleF(2, m_scene.RegionInfo.RegionSizeX - 15, 200, 25);
255
256 Graphics g = Graphics.FromImage(_map);
257 g.SmoothingMode = SmoothingMode.AntiAlias;
258 g.InterpolationMode = InterpolationMode.HighQualityBicubic;
259 g.PixelOffsetMode = PixelOffsetMode.HighQuality;
260 g.DrawString(m_scene.Name, new Font("Arial", 8), Brushes.White, rectf);
261 g.Flush();
262 }
263
264 private void writePositionOnMap(ref Bitmap _map)
265 {
266 RectangleF rectf = new RectangleF(m_scene.RegionInfo.RegionSizeY - 85, m_scene.RegionInfo.RegionSizeX - 15, 80, 25);
267
268 Graphics g = Graphics.FromImage(_map);
269 g.SmoothingMode = SmoothingMode.AntiAlias;
270 g.InterpolationMode = InterpolationMode.HighQualityBicubic;
271 g.PixelOffsetMode = PixelOffsetMode.HighQuality;
272 g.DrawString(m_scene.RegionInfo.RegionLocX + ", " + m_scene.RegionInfo.RegionLocY, new Font("Arial", 8), Brushes.White, rectf);
273 g.Flush();
274 }
275
276 private void writeHostedByOnMap(ref Bitmap _map)
277 {
278 RectangleF rectf = new RectangleF(2, m_scene.RegionInfo.RegionSizeX - 15, 200, 25);
279
280 Graphics g = Graphics.FromImage(_map);
281 g.SmoothingMode = SmoothingMode.AntiAlias;
282 g.InterpolationMode = InterpolationMode.HighQualityBicubic;
283 g.PixelOffsetMode = PixelOffsetMode.HighQuality;
284 g.DrawString(m_enable_HostedByText, new Font("Arial", 8), Brushes.Gray, rectf);
285 g.Flush();
286 }
287 231
232 public static String unixTimeToDateString(int unixTime)
233 {
234 DateTime unixStart = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
235 long unixTimeStampInTicks = (long)(unixTime * TimeSpan.TicksPerSecond);
236 DateTime _date = new DateTime(unixStart.Ticks + unixTimeStampInTicks, System.DateTimeKind.Utc);
237
238 return fillInt(_date.Day, 2) + "." + fillInt(_date.Month, 2) + "." + fillInt(_date.Year, 4) + " " + fillInt(_date.Hour, 2) + ":" + fillInt(_date.Minute, 2);
239 }
240
241 private void writeDateOnMap(ref Bitmap _map)
242 {
243 RectangleF rectf = new RectangleF(2, 1, 200, 25);
244
245 Graphics g = Graphics.FromImage(_map);
246 g.SmoothingMode = SmoothingMode.AntiAlias;
247 g.InterpolationMode = InterpolationMode.HighQualityBicubic;
248 g.PixelOffsetMode = PixelOffsetMode.HighQuality;
249 g.DrawString(unixTimeToDateString(getCurrentUnixTime()), new Font("Arial", 8), Brushes.White, rectf);
250 g.Flush();
251 }
252
253 private void writeNameOnMap(ref Bitmap _map)
254 {
255 RectangleF rectf = new RectangleF(2, m_scene.RegionInfo.RegionSizeX - 15, 200, 25);
256
257 Graphics g = Graphics.FromImage(_map);
258 g.SmoothingMode = SmoothingMode.AntiAlias;
259 g.InterpolationMode = InterpolationMode.HighQualityBicubic;
260 g.PixelOffsetMode = PixelOffsetMode.HighQuality;
261 g.DrawString(m_scene.Name, new Font("Arial", 8), Brushes.White, rectf);
262 g.Flush();
263 }
264*/
265
266 private void writePositionOnMap(ref Bitmap _map)
267 {
268 RectangleF rectf = new RectangleF(m_scene.RegionInfo.RegionSizeY - 85, m_scene.RegionInfo.RegionSizeX - 15, 80, 25);
269
270 Graphics g = Graphics.FromImage(_map);
271 g.SmoothingMode = SmoothingMode.AntiAlias;
272 g.InterpolationMode = InterpolationMode.HighQualityBicubic;
273 g.PixelOffsetMode = PixelOffsetMode.HighQuality;
274 g.DrawString(m_scene.RegionInfo.RegionLocX + ", " + m_scene.RegionInfo.RegionLocY, new Font("Arial", 8), Brushes.White, rectf);
275 g.Flush();
276 }
277
278/*
279 private void writeHostedByOnMap(ref Bitmap _map)
280 {
281 RectangleF rectf = new RectangleF(2, m_scene.RegionInfo.RegionSizeX - 15, 200, 25);
282
283 Graphics g = Graphics.FromImage(_map);
284 g.SmoothingMode = SmoothingMode.AntiAlias;
285 g.InterpolationMode = InterpolationMode.HighQualityBicubic;
286 g.PixelOffsetMode = PixelOffsetMode.HighQuality;
287 g.DrawString(m_enable_HostedByText, new Font("Arial", 8), Brushes.Gray, rectf);
288 g.Flush();
289 }
290*/
291
292 public Bitmap CreateMapTileForce()
293 {
294 m_log.Info("[WARP 3D CACHED IMAGE MODULE]: Forcing a map tile regenerate.");
295 File.Delete(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp"));
296 return CreateMapTile();
297 }
288 298
289 public Bitmap CreateMapTile() 299 public Bitmap CreateMapTile()
290 { 300 {
291 if ((File.GetCreationTime(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp")).Month != DateTime.Now.Month) && m_enable_refreshEveryMonth == true) 301 if ((File.GetCreationTime(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp")).Month != DateTime.Now.Month) && (m_enable_refreshEveryMonth == true))
292 File.Delete(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp")); 302 {
293 303 m_log.InfoFormat("[WARP 3D CACHED IMAGE MODULE]: Clearing old map tile out of cache {0} {1}.",
294 if (File.Exists(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp"))) 304 File.GetCreationTime(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp")).Month, DateTime.Now.Month);
295 { 305 File.Delete(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp"));
296 return new Bitmap(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp")); 306 }
297 } 307
298 else 308 if (File.Exists(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp")))
299 { 309 {
300 List<string> renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory()); 310 return new Bitmap(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp"));
301 if (renderers.Count > 0) 311 }
302 { 312 else
303 m_primMesher = RenderingLoader.LoadRenderer(renderers[0]); 313 {
304 } 314 m_log.Info("[WARP 3D CACHED IMAGE MODULE]: Actually generating a map tile.");
305 315 List<string> renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory());
306 cameraPos = new Vector3( 316 if (renderers.Count > 0)
307 (m_scene.RegionInfo.RegionSizeX) * 0.5f, 317 {
308 (m_scene.RegionInfo.RegionSizeY) * 0.5f, 318 m_primMesher = RenderingLoader.LoadRenderer(renderers[0]);
309 m_cameraHeight); 319 }
310 320
311 cameraDir = -Vector3.UnitZ; 321 cameraPos = new Vector3(
312 viewWitdh = (int)m_scene.RegionInfo.RegionSizeX; 322 (m_scene.RegionInfo.RegionSizeX) * 0.5f,
313 viewHeight = (int)m_scene.RegionInfo.RegionSizeY; 323 (m_scene.RegionInfo.RegionSizeY) * 0.5f,
314 orto = true; 324 m_cameraHeight);
315 325
316 // fov = warp_Math.rad2deg(2f * (float)Math.Atan2(viewWitdh, 4096f)); 326 cameraDir = -Vector3.UnitZ;
317 // orto = false; 327 viewWitdh = (int)m_scene.RegionInfo.RegionSizeX;
318 328 viewHeight = (int)m_scene.RegionInfo.RegionSizeY;
319 Bitmap tile = GenImage(); 329 orto = true;
320 330
321 if (m_enable_date) 331 // fov = warp_Math.rad2deg(2f * (float)Math.Atan2(viewWitdh, 4096f));
322 writeDateOnMap(ref tile); 332 // orto = false;
323 333
324 if (m_enable_regionName) 334 Bitmap tile = GenImage();
325 writeNameOnMap(ref tile); 335
326 336//// if (m_enable_date)
327 if (m_enable_regionPosition) 337//// writeDateOnMap(ref tile);
328 writePositionOnMap(ref tile); 338
329 339//// if (m_enable_regionName)
330 if (m_enable_HostedBy) 340//// writeNameOnMap(ref tile);
331 writeHostedByOnMap(ref tile); 341
332 342 if (m_enable_regionPosition)
333 tile.Save(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp")); 343 writePositionOnMap(ref tile);
334 344
335 // image may be reloaded elsewhere, so no compression format 345//// if (m_enable_HostedBy)
336 string filename = "MAP-" + m_scene.RegionInfo.RegionID.ToString() + ".png"; 346//// writeHostedByOnMap(ref tile);
337 tile.Save(filename, ImageFormat.Png); 347
338 m_primMesher = null; 348 tile.Save(System.IO.Path.Combine(m_cacheDirectory, m_scene.RegionInfo.RegionID + ".bmp"));
339 return tile; 349
350 // image may be reloaded elsewhere, so no compression format
351 string filename = System.IO.Path.Combine(m_cacheDirectory, "MAP-" + m_scene.RegionInfo.RegionID.ToString() + ".png");
352 m_log.Info("[WARP 3D CACHED IMAGE MODULE]: Generating map tile " + filename);
353 tile.Save(filename, ImageFormat.Png);
354 m_primMesher = null;
355 return tile;
340 } 356 }
341 } 357 }
342 358
@@ -420,7 +436,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
420 catch (Exception e) 436 catch (Exception e)
421 { 437 {
422 // JPEG2000 encoder failed 438 // JPEG2000 encoder failed
423 m_log.Error("[WARP 3D IMAGE MODULE]: Failed generating terrain map: ", e); 439 m_log.Error("[WARP 3D CACHED IMAGE MODULE]: Failed generating terrain map: ", e);
424 } 440 }
425 441
426 return null; 442 return null;
@@ -599,7 +615,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
599 tu = -2f * scaledPos.X; 615 tu = -2f * scaledPos.X;
600 tv = scaledPos.Y * v.Normal.Z - scaledPos.Z * v.Normal.Y; 616 tv = scaledPos.Y * v.Normal.Z - scaledPos.Z * v.Normal.Y;
601 } 617 }
602 else 618 else
603 { 619 {
604 tu = 2f * scaledPos.X; 620 tu = 2f * scaledPos.X;
605 tv = -scaledPos.Y * v.Normal.Z + scaledPos.Z * v.Normal.Y; 621 tv = -scaledPos.Y * v.Normal.Z + scaledPos.Z * v.Normal.Y;
@@ -667,7 +683,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
667 } 683 }
668 else 684 else
669 { 685 {
670 m_log.WarnFormat("[Warp3D] failed to get mesh or sculpt asset {0} of prim {1} at {2}", 686 m_log.WarnFormat("[WARP 3D CACHED IMAGE MODULE] failed to get mesh or sculpt asset {0} of prim {1} at {2}",
671 omvPrim.Sculpt.SculptTexture.ToString(), prim.Name, prim.GetWorldPosition().ToString()); 687 omvPrim.Sculpt.SculptTexture.ToString(), prim.Name, prim.GetWorldPosition().ToString());
672 } 688 }
673 } 689 }
@@ -923,11 +939,11 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
923 } 939 }
924 catch (Exception e) 940 catch (Exception e)
925 { 941 {
926 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); 942 m_log.WarnFormat("[WARP 3D CACHED IMAGE MODULE]: Failed to decode texture {0} for prim {1} at {2}, exception {3}", id.ToString(), sop.Name, sop.GetWorldPosition().ToString(), e.Message);
927 } 943 }
928 } 944 }
929 else 945 else
930 m_log.WarnFormat("[Warp3D]: missing texture {0} data for prim {1} at {2}", 946 m_log.WarnFormat("[WARP 3D CACHED IMAGE MODULE]: missing texture {0} data for prim {1} at {2}",
931 id.ToString(), sop.Name, sop.GetWorldPosition().ToString()); 947 id.ToString(), sop.Name, sop.GetWorldPosition().ToString());
932 948
933 m_warpTextures[id.ToString()] = ret; 949 m_warpTextures[id.ToString()] = ret;
@@ -1041,7 +1057,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
1041 catch (Exception ex) 1057 catch (Exception ex)
1042 { 1058 {
1043 m_log.WarnFormat( 1059 m_log.WarnFormat(
1044 "[WARP 3D IMAGE MODULE]: Error decoding JPEG2000 texture {0} ({1} bytes): {2}", 1060 "[WARP 3D CACHED IMAGE MODULE]: Error decoding JPEG2000 texture {0} ({1} bytes): {2}",
1045 textureID, j2kData.Length, ex.Message); 1061 textureID, j2kData.Length, ex.Message);
1046 1062
1047 width = 0; 1063 width = 0;
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini
index 1852438..e49fae9 100644
--- a/bin/OpenSimDefaults.ini
+++ b/bin/OpenSimDefaults.ini
@@ -433,7 +433,7 @@
433 ; The module to use in order to generate map images. 433 ; The module to use in order to generate map images.
434 ; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can 434 ; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can
435 ; generate better images. 435 ; generate better images.
436 MapImageModule = "Warp3DImageModule" 436 MapImageModule = "Warp3DCachedImageModule"
437 437
438 ; World map blacklist timeout in seconds 438 ; World map blacklist timeout in seconds
439 ;BlacklistTimeout = 600 439 ;BlacklistTimeout = 600
@@ -459,18 +459,18 @@
459 459
460 ; Attempt to render meshes and sculpties on the map 460 ; Attempt to render meshes and sculpties on the map
461 RenderMeshes = false 461 RenderMeshes = false
462 462
463 ; warp3D rendering height limits for prims (relative to rez position not bounding box) 463 ; warp3D rendering height limits for prims (relative to rez position not bounding box)
464 ; prims above RenderMaxHeight are excluded 464 ; prims above RenderMaxHeight are excluded
465 ; valid values: 100 to 4086 465 ; valid values: 100 to 4086
466 ;RenderMaxHeight = 4086 466 RenderMaxHeight = 4086
467 467
468 ; prims below RenderMinHeight are excluded 468 ; prims below RenderMinHeight are excluded
469 ; valid values: -100 to RenderMaxHeight - 10 469 ; valid values: -100 to RenderMaxHeight - 10
470 ;RenderMinHeight = -100 470 RenderMinHeight = -100
471 471
472 ; Show NPCs as green world map dots 472 ; Show NPCs as green world map dots
473 ;ShowNPCs = true 473 ShowNPCs = false
474 474
475 ; where to store cached map tiles. 475 ; where to store cached map tiles.
476 CacheDirectory = "${Paths|CachePath}/MapImageCache" 476 CacheDirectory = "${Paths|CachePath}/MapImageCache"
@@ -479,7 +479,7 @@
479 enablePosition = true 479 enablePosition = true
480 480
481 ; Refresh the cached map tile once a month. 481 ; Refresh the cached map tile once a month.
482 ;RefreshEveryMonth = true 482 RefreshEveryMonth = false
483 483
484 ;# {MapColorWater} {} {Water color for textured and shaded maps} {"#1D475F"} 484 ;# {MapColorWater} {} {Water color for textured and shaded maps} {"#1D475F"}
485 ; MapColorWater = "#3399FF" 485 ; MapColorWater = "#3399FF"
diff --git a/bin/config-include/SimBalanced.ini b/bin/config-include/SimBalanced.ini
index fbf778f..f650ce5 100644
--- a/bin/config-include/SimBalanced.ini
+++ b/bin/config-include/SimBalanced.ini
@@ -168,7 +168,7 @@
168 ; The module to use in order to generate map images. 168 ; The module to use in order to generate map images.
169 ; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can 169 ; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can
170 ; generate better images. 170 ; generate better images.
171 MapImageModule = "Warp3DImageModule" 171 MapImageModule = "Warp3DCachedImageModule"
172 172
173 ; World map blacklist timeout in seconds 173 ; World map blacklist timeout in seconds
174 ;BlacklistTimeout = 600 174 ;BlacklistTimeout = 600
diff --git a/bin/config-include/SimDefault.ini b/bin/config-include/SimDefault.ini
index 3f2e713..5413d9d 100644
--- a/bin/config-include/SimDefault.ini
+++ b/bin/config-include/SimDefault.ini
@@ -165,7 +165,7 @@
165 ; The module to use in order to generate map images. 165 ; The module to use in order to generate map images.
166 ; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can 166 ; MapImageModule is the default. Warp3DImageModule is an alternative experimental module that can
167 ; generate better images. 167 ; generate better images.
168 MapImageModule = "MapImageModule" 168 MapImageModule = "Warp3DCachedImageModule"
169 169
170 ; World map blacklist timeout in seconds 170 ; World map blacklist timeout in seconds
171 ;BlacklistTimeout = 600 171 ;BlacklistTimeout = 600
@@ -187,10 +187,10 @@
187 TexturePrims = true 187 TexturePrims = true
188 188
189 ; Only texture prims that have a diagonal size greater than this number 189 ; Only texture prims that have a diagonal size greater than this number
190 TexturePrimSize = 48 190 TexturePrimSize = 1
191 191
192 ; Attempt to render meshes and sculpties on the map 192 ; Attempt to render meshes and sculpties on the map
193 RenderMeshes = false 193 RenderMeshes = true
194 194
195 ;UseAntiAliasing = true 195 ;UseAntiAliasing = true
196 196