mirror of
https://github.com/opensim/opensim.git
synced 2026-08-12 04:05:42 +08:00
Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78cb44c0c9 | ||
|
|
8002eaffb9 | ||
|
|
b10457f04a | ||
|
|
35104e4960 | ||
|
|
5d70f9e34d | ||
|
|
a87969840c | ||
|
|
460ed81f41 | ||
|
|
b4b0d1773a | ||
|
|
46dd8c03bb | ||
|
|
3463388772 | ||
|
|
1d7235f864 | ||
|
|
7607ed99a0 | ||
|
|
205b8c6018 | ||
|
|
6950500b87 | ||
|
|
68b42d860a | ||
|
|
4549b745c7 | ||
|
|
34cd0f8d23 |
@@ -84,6 +84,8 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
|
||||
private float m_renderMinHeight = -100f;
|
||||
private float m_renderMaxHeight = 4096f;
|
||||
|
||||
private string m_mapTilesDirectory = string.Empty; // directory to load/save map tile images
|
||||
|
||||
private bool m_Enabled = false;
|
||||
|
||||
#region Region Module interface
|
||||
@@ -132,6 +134,21 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
|
||||
m_renderMinHeight = -100f;
|
||||
else if (m_renderMinHeight > m_renderMaxHeight - 10f)
|
||||
m_renderMinHeight = m_renderMaxHeight - 10f;
|
||||
|
||||
m_mapTilesDirectory =
|
||||
Util.GetConfigVarFromSections<string>(source, "MapTilesDirectory", configSections, m_mapTilesDirectory);
|
||||
if(!string.IsNullOrEmpty(m_mapTilesDirectory))
|
||||
{
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(m_mapTilesDirectory);
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
m_log.Error($"[MAPTILE]: failed to create folder {m_mapTilesDirectory} for local map tiles {e.Message}");
|
||||
m_mapTilesDirectory = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void AddRegion(Scene scene)
|
||||
@@ -209,6 +226,9 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
|
||||
Bitmap tile = GenImage();
|
||||
// image may be reloaded elsewhere, so no compression format
|
||||
string filename = "MAP-" + m_scene.RegionInfo.RegionID.ToString() + ".png";
|
||||
if (!string.IsNullOrEmpty(m_mapTilesDirectory))
|
||||
filename = System.IO.Path.Combine(m_mapTilesDirectory, filename);
|
||||
|
||||
tile.Save(filename,ImageFormat.Png);
|
||||
m_primMesher = null;
|
||||
return tile;
|
||||
|
||||
@@ -130,14 +130,10 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||
|
||||
//m_log.DebugFormat("[MAPSEARCHMODULE]: search {0} returned {1} regions", mapName, regionInfos.Count);
|
||||
|
||||
MapBlockData data;
|
||||
if (regionInfos != null && regionInfos.Count > 0)
|
||||
{
|
||||
foreach (GridRegion info in regionInfos)
|
||||
{
|
||||
data = new MapBlockData();
|
||||
data.Agents = 0;
|
||||
data.Access = info.Access;
|
||||
MapBlockData block = new MapBlockData();
|
||||
MapBlockFromGridRegion(block, info, flags);
|
||||
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
@@ -100,6 +99,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||
protected bool m_exportPrintScale = false; // prints the scale of map in meters on exported map
|
||||
protected bool m_exportPrintRegionName = false; // prints the region name exported map
|
||||
protected bool m_localV1MapAssets = false; // keep V1 map assets only on local cache
|
||||
protected string m_mapTilesDirectory = string.Empty; // directory to load/save map tile images
|
||||
|
||||
private readonly object m_sceneLock = new object();
|
||||
public WorldMapModule()
|
||||
@@ -158,6 +158,21 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||
Util.GetConfigVarFromSections<bool>(config, "ExportMapAddRegionName", configSections, m_exportPrintRegionName);
|
||||
m_localV1MapAssets =
|
||||
Util.GetConfigVarFromSections<bool>(config, "LocalV1MapAssets", configSections, m_localV1MapAssets);
|
||||
m_mapTilesDirectory =
|
||||
Util.GetConfigVarFromSections<string>(config, "MapTilesDirectory", configSections, m_mapTilesDirectory);
|
||||
if(!string.IsNullOrEmpty(m_mapTilesDirectory))
|
||||
{
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(m_mapTilesDirectory);
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
m_log.Error($"[WORLD MAP]: failed to create folder {m_mapTilesDirectory} for local map tiles {e.Message}");
|
||||
m_mapTilesDirectory = null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public virtual void AddRegion(Scene scene)
|
||||
@@ -172,7 +187,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||
m_regionGlobalX = scene.RegionInfo.WorldLocX;
|
||||
m_regionGlobalY = scene.RegionInfo.WorldLocY;
|
||||
m_regionSizeX = scene.RegionInfo.RegionSizeX;
|
||||
m_regionSizeY = scene.RegionInfo.RegionSizeX;
|
||||
m_regionSizeY = scene.RegionInfo.RegionSizeY;
|
||||
m_regionName = scene.RegionInfo.RegionName;
|
||||
|
||||
m_scene.RegisterModuleInterface<IWorldMapModule>(this);
|
||||
@@ -1337,10 +1352,12 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||
startX--;
|
||||
startY--;
|
||||
|
||||
bool doneLocal = false;
|
||||
bool doneLocal;
|
||||
string filename = "MAP-" + m_scene.RegionInfo.RegionID.ToString() + ".png";
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrEmpty(m_mapTilesDirectory))
|
||||
filename = Path.Combine(m_mapTilesDirectory, filename);
|
||||
using(Image localMap = Bitmap.FromFile(filename))
|
||||
{
|
||||
int x = regionX - startX;
|
||||
@@ -1359,7 +1376,11 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||
}
|
||||
doneLocal = true;
|
||||
}
|
||||
catch {}
|
||||
catch(Exception ex)
|
||||
{
|
||||
m_log.Error($"[WORLD MAP]: failed Export map file {ex.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
if(regions.Count > 0)
|
||||
{
|
||||
|
||||
@@ -1337,10 +1337,15 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
string IDstr = assetID.ToString();
|
||||
AssetBase asset = m_assetService.Get(IDstr, m_assetServerURL, true);
|
||||
if (asset is null)
|
||||
m_log.Debug($"[HGUUIDGatherer]: Failed to fetch asset {IDstr} from {m_assetServerURL}");
|
||||
else
|
||||
m_log.Debug($"[HGUUIDGatherer]: Copied asset {IDstr} from {m_assetServerURL} to local asset server");
|
||||
// Per-asset Debug is expensive (sync File+Console). Only when HTTP debug is on:
|
||||
// debug http all|out N (WebUtil.DebugLevel > 0)
|
||||
if (WebUtil.DebugLevel > 0)
|
||||
{
|
||||
if (asset is null)
|
||||
m_log.Debug($"[HGUUIDGatherer]: Failed to fetch asset {IDstr} from {m_assetServerURL}");
|
||||
else
|
||||
m_log.Debug($"[HGUUIDGatherer]: Copied asset {IDstr} from {m_assetServerURL} to local asset server");
|
||||
}
|
||||
|
||||
return asset;
|
||||
}
|
||||
|
||||
@@ -318,6 +318,9 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
||||
m_LastRanAt = now;
|
||||
m_InstEHSlice++;
|
||||
callMode = CallMode_NORMAL;
|
||||
// The script really executes here, so it has meaningful
|
||||
// state to serialize — GetXMLState gates on this flag.
|
||||
m_HasRun = true;
|
||||
e = ResumeEx();
|
||||
}
|
||||
|
||||
@@ -393,6 +396,8 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
||||
m_DetectParams = evt.DetectParams;
|
||||
m_LastRanAt = now;
|
||||
m_InstEHEvent++;
|
||||
// Starting a new event handler counts as "has run".
|
||||
m_HasRun = true;
|
||||
e = StartEventHandler(evc, evt.Params);
|
||||
}
|
||||
|
||||
|
||||
@@ -61,6 +61,10 @@
|
||||
; QueueUserWorkItem, SmartThreadPool, and Thread.
|
||||
async_call_method = SmartThreadPool
|
||||
|
||||
; Min threads to allocate on the FireAndForget thread pool
|
||||
; when running with the SmartThreadPool option above
|
||||
MinPoolThreads = 2
|
||||
|
||||
; Max threads to allocate on the FireAndForget thread pool
|
||||
; when running with the SmartThreadPool option above
|
||||
MaxPoolThreads = 300
|
||||
@@ -467,6 +471,11 @@
|
||||
; generate better images.
|
||||
;MapImageModule = "MapImageModule"
|
||||
|
||||
; Directory used to load and save the generated MAP-<region uuid>.png tile images.
|
||||
; If left empty the current working directory is used (default behaviour).
|
||||
; The directory is created automatically if it does not exist.
|
||||
;MapTilesDirectory = "./localmaptiles"
|
||||
|
||||
; World map blacklist timeout in seconds
|
||||
;BlacklistTimeout = 600
|
||||
|
||||
|
||||
Reference in New Issue
Block a user