Allow Region specific static maptiles to be loaded from file.
parent
cf97535d9e
commit
61353dde80
|
@ -143,6 +143,7 @@ namespace OpenSim.Framework
|
|||
public string RemotingAddress;
|
||||
public UUID ScopeID = UUID.Zero;
|
||||
private UUID m_maptileStaticUUID = UUID.Zero;
|
||||
public string m_maptileStaticFile;
|
||||
|
||||
public uint WorldLocX = 0;
|
||||
public uint WorldLocY = 0;
|
||||
|
@ -349,6 +350,11 @@ namespace OpenSim.Framework
|
|||
{
|
||||
get { return m_maptileStaticUUID; }
|
||||
}
|
||||
|
||||
public string MaptileStaticFile
|
||||
{
|
||||
get { return m_maptileStaticFile; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The port by which http communication occurs with the region (most noticeably, CAPS communication)
|
||||
|
@ -716,6 +722,9 @@ namespace OpenSim.Framework
|
|||
{
|
||||
config.Set("MaptileStaticUUID", m_maptileStaticUUID.ToString());
|
||||
}
|
||||
|
||||
m_maptileStaticFile = config.GetString("MaptileStaticFile", String.Empty);
|
||||
allKeys.Remove("MaptileStaticFile");
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -843,6 +852,9 @@ namespace OpenSim.Framework
|
|||
|
||||
if (m_maptileStaticUUID != UUID.Zero)
|
||||
config.Set("MaptileStaticUUID", m_maptileStaticUUID.ToString());
|
||||
|
||||
if (m_maptileStaticFile != String.Empty)
|
||||
config.Set("MaptileStaticFile", m_maptileStaticFile);
|
||||
}
|
||||
|
||||
public bool ignoreIncomingConfiguration(string configuration_key, object configuration_result)
|
||||
|
@ -952,6 +964,9 @@ namespace OpenSim.Framework
|
|||
|
||||
configMember.addConfigurationOption("region_static_maptile", ConfigurationOption.ConfigurationTypes.TYPE_UUID,
|
||||
"UUID of a texture to use as the map for this region", m_maptileStaticUUID.ToString(), true);
|
||||
|
||||
configMember.addConfigurationOption("region_static_mapfile", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||
"Filename of a texture to use as the map for this region", m_maptileStaticFile, true);
|
||||
}
|
||||
|
||||
public void loadConfigurationOptions()
|
||||
|
@ -1016,6 +1031,9 @@ namespace OpenSim.Framework
|
|||
|
||||
configMember.addConfigurationOption("region_static_maptile", ConfigurationOption.ConfigurationTypes.TYPE_UUID,
|
||||
"UUID of a texture to use as the map for this region", String.Empty, true);
|
||||
|
||||
configMember.addConfigurationOption("region_static_mapfile", ConfigurationOption.ConfigurationTypes.TYPE_STRING,
|
||||
"Filename of a texture to use as the map for this region", String.Empty, true);
|
||||
}
|
||||
|
||||
public bool handleIncomingConfiguration(string configuration_key, object configuration_result)
|
||||
|
@ -1097,6 +1115,9 @@ namespace OpenSim.Framework
|
|||
case "region_static_maptile":
|
||||
m_maptileStaticUUID = (UUID)configuration_result;
|
||||
break;
|
||||
case "region_static_mapfile":
|
||||
m_maptileStaticFile = (string)configuration_result;
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -91,29 +91,46 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap
|
|||
|
||||
if (generateMaptiles)
|
||||
{
|
||||
if (textureTerrain)
|
||||
if (String.IsNullOrEmpty(m_scene.RegionInfo.m_maptileStaticFile))
|
||||
{
|
||||
terrainRenderer = new TexturedMapTileRenderer();
|
||||
if (textureTerrain)
|
||||
{
|
||||
terrainRenderer = new TexturedMapTileRenderer();
|
||||
}
|
||||
else
|
||||
{
|
||||
terrainRenderer = new ShadedMapTileRenderer();
|
||||
}
|
||||
|
||||
terrainRenderer.Initialise(m_scene, m_config);
|
||||
|
||||
mapbmp = new Bitmap((int)m_scene.Heightmap.Width, (int)m_scene.Heightmap.Height,
|
||||
System.Drawing.Imaging.PixelFormat.Format24bppRgb);
|
||||
//long t = System.Environment.TickCount;
|
||||
//for (int i = 0; i < 10; ++i) {
|
||||
terrainRenderer.TerrainToBitmap(mapbmp);
|
||||
//}
|
||||
//t = System.Environment.TickCount - t;
|
||||
//m_log.InfoFormat("[MAPTILE] generation of 10 maptiles needed {0} ms", t);
|
||||
|
||||
if (drawPrimVolume)
|
||||
{
|
||||
DrawObjectVolume(m_scene, mapbmp);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
terrainRenderer = new ShadedMapTileRenderer();
|
||||
}
|
||||
|
||||
terrainRenderer.Initialise(m_scene, m_config);
|
||||
|
||||
mapbmp = new Bitmap((int)m_scene.Heightmap.Width, (int)m_scene.Heightmap.Height,
|
||||
System.Drawing.Imaging.PixelFormat.Format24bppRgb);
|
||||
//long t = System.Environment.TickCount;
|
||||
//for (int i = 0; i < 10; ++i) {
|
||||
terrainRenderer.TerrainToBitmap(mapbmp);
|
||||
//}
|
||||
//t = System.Environment.TickCount - t;
|
||||
//m_log.InfoFormat("[MAPTILE] generation of 10 maptiles needed {0} ms", t);
|
||||
|
||||
if (drawPrimVolume)
|
||||
{
|
||||
DrawObjectVolume(m_scene, mapbmp);
|
||||
try
|
||||
{
|
||||
mapbmp = new Bitmap("maptiles/" + m_scene.RegionInfo.m_maptileStaticFile);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.ErrorFormat("[MAPTILE]: Failed to load Static map image texture file: {0} for {1}", "maptiles/" + m_scene.RegionInfo.m_maptileStaticFile, m_scene.Name);
|
||||
//mapbmp = new Bitmap((int)m_scene.Heightmap.Width, (int)m_scene.Heightmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
|
||||
mapbmp = null;
|
||||
}
|
||||
if (mapbmp != null) m_log.DebugFormat("[MAPTILE]: Static map image texture file {0} found for {1}", "maptiles/" + m_scene.RegionInfo.m_maptileStaticFile, m_scene.Name);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -903,7 +903,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
if (m_generateMaptiles)
|
||||
{
|
||||
int maptileRefresh = startupConfig.GetInt("MaptileRefresh", 0);
|
||||
int maptileRefresh = Util.GetConfigVarFromSections<int>(config, "MaptileRefresh", possibleMapConfigSections, 0);
|
||||
m_log.InfoFormat("[SCENE]: Region {0}, WORLD MAP refresh time set to {1} seconds", RegionInfo.RegionName, maptileRefresh);
|
||||
if (maptileRefresh != 0)
|
||||
{
|
||||
m_mapGenerationTimer.Interval = maptileRefresh * 1000;
|
||||
|
|
|
@ -297,6 +297,7 @@
|
|||
|
||||
;# {MaptileStaticUUID} {} {Asset ID for static map texture} {} 00000000-0000-0000-0000-000000000000
|
||||
;; If not generating maptiles, use this static texture asset ID
|
||||
;; This may be overridden on a per region basis in Regions.ini
|
||||
; MaptileStaticUUID = "00000000-0000-0000-0000-000000000000"
|
||||
|
||||
;# {TextureOnMapTile} {} {Use terrain textures for map tiles?} {true false} true
|
||||
|
|
|
@ -46,7 +46,40 @@ ExternalHostName = "SYSTEMIP"
|
|||
|
||||
; RegionType = "Mainland"
|
||||
|
||||
; * Region Specific Static Maptiles:
|
||||
; * Important: To use any kind of texture *assets* as a static maptile, the following
|
||||
; * things must be set in the [Map] section of OpenSim.ini :
|
||||
; *
|
||||
; * UUID of texture to use as a maptile for this region.
|
||||
; * Only set if you have disabled dynamic generation of the map tile from the region contents.
|
||||
; * MapImageModule = "MapImageModule"
|
||||
; * GenerateMaptiles = false
|
||||
; *
|
||||
; * Now, there is a setting in [Map] in OpenSim.ini called
|
||||
; *
|
||||
; * MaptileStaticUUID = "00000000-0000-0000-0000-000000000000"
|
||||
; *
|
||||
; * where, given the criteria above, lets you specify the UUID of a texture asset to use
|
||||
; * as a maptile *Simulator Wide*. Here, you can override that on a per region basis for
|
||||
; * Simulators that run multiple regions:
|
||||
|
||||
; MaptileStaticUUID = "00000000-0000-0000-0000-000000000000"
|
||||
|
||||
|
||||
; * Region Specific Static Maptiles from file:
|
||||
; * It is also possible to create maptiles using external image files of the right size
|
||||
; * and supported formats (bmp,tga,png,jpg in RGB 24bpp format)
|
||||
; *
|
||||
; * Important: To use any kind of texture *files* as a static maptile, the following
|
||||
; * things must be set in the [Map] section of OpenSim.ini :
|
||||
; *
|
||||
; * MapImageModule = "MapImageModule"
|
||||
; * GenerateMaptiles = true
|
||||
; *
|
||||
; * The image must be the same size in pixels as the region or varregion is in meters.
|
||||
; * i.e. 256x256 pixels for single region of 256x256m, or 1280x1280 pixels for a varregion
|
||||
; * of size 1280x1280m. The image is loaded from OpenSim's bin/maptiles/ directory.
|
||||
; *
|
||||
; * If this setting is used, then the base map is generated from this file instead of being
|
||||
; * built using MapImageModule's terrain and prim renderer. Parcel 'for sale' overlays are
|
||||
; * still drawn on top of the static map by the World Map module.
|
||||
|
||||
; MaptileStaticFile = "SomeFile.png"
|
Loading…
Reference in New Issue