aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
diff options
context:
space:
mode:
authorJustin Clarke Casey2009-02-13 17:40:52 +0000
committerJustin Clarke Casey2009-02-13 17:40:52 +0000
commit92232663e4878d5a1f74489ba9fcfd418a10990e (patch)
tree05ffb7ee167a3d67758aec8a601e701aa38d3149 /OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
parent* Remove old Scene.CreateTerrainTexture code that is now handled by the world... (diff)
downloadopensim-SC_OLD-92232663e4878d5a1f74489ba9fcfd418a10990e.zip
opensim-SC_OLD-92232663e4878d5a1f74489ba9fcfd418a10990e.tar.gz
opensim-SC_OLD-92232663e4878d5a1f74489ba9fcfd418a10990e.tar.bz2
opensim-SC_OLD-92232663e4878d5a1f74489ba9fcfd418a10990e.tar.xz
* refactor: Move LazySaveGeneratedMapTile from scene to WorldMapModule
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs62
1 files changed, 61 insertions, 1 deletions
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
index 9f5277b..9355374 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
@@ -50,7 +50,7 @@ using OSDMap=OpenMetaverse.StructuredData.OSDMap;
50 50
51namespace OpenSim.Region.CoreModules.World.WorldMap 51namespace OpenSim.Region.CoreModules.World.WorldMap
52{ 52{
53 public class WorldMapModule : IRegionModule 53 public class WorldMapModule : IRegionModule, IWorldMapModule
54 { 54 {
55 private static readonly ILog m_log = 55 private static readonly ILog m_log =
56 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 56 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -89,6 +89,8 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
89 return; 89 return;
90 90
91 m_scene = scene; 91 m_scene = scene;
92
93 m_scene.RegisterModuleInterface<IWorldMapModule>(this);
92 94
93 m_scene.AddCommand( 95 m_scene.AddCommand(
94 this, "export-map", 96 this, "export-map",
@@ -935,6 +937,64 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
935 } 937 }
936 return responsemap; 938 return responsemap;
937 } 939 }
940
941 public void LazySaveGeneratedMaptile(byte[] data, bool temporary)
942 {
943 // Overwrites the local Asset cache with new maptile data
944 // Assets are single write, this causes the asset server to ignore this update,
945 // but the local asset cache does not
946
947 // this is on purpose! The net result of this is the region always has the most up to date
948 // map tile while protecting the (grid) asset database from bloat caused by a new asset each
949 // time a mapimage is generated!
950
951 UUID lastMapRegionUUID = m_scene.RegionInfo.lastMapUUID;
952
953 int lastMapRefresh = 0;
954 int twoDays = 172800;
955 int RefreshSeconds = twoDays;
956
957 try
958 {
959 lastMapRefresh = Convert.ToInt32(m_scene.RegionInfo.lastMapRefresh);
960 }
961 catch (ArgumentException)
962 {
963 }
964 catch (FormatException)
965 {
966 }
967 catch (OverflowException)
968 {
969 }
970
971 UUID TerrainImageUUID = UUID.Random();
972
973 if (lastMapRegionUUID == UUID.Zero || (lastMapRefresh + RefreshSeconds) < Util.UnixTimeSinceEpoch())
974 {
975 m_scene.RegionInfo.SaveLastMapUUID(TerrainImageUUID);
976
977 m_log.Debug("[MAPTILE]: STORING MAPTILE IMAGE");
978 }
979 else
980 {
981 TerrainImageUUID = lastMapRegionUUID;
982 m_log.Debug("[MAPTILE]: REUSING OLD MAPTILE IMAGE ID");
983 }
984
985 m_scene.RegionInfo.RegionSettings.TerrainImageID = TerrainImageUUID;
986
987 AssetBase asset = new AssetBase();
988 asset.Metadata.FullID = m_scene.RegionInfo.RegionSettings.TerrainImageID;
989 asset.Data = data;
990 asset.Metadata.Name
991 = "terrainImage_" + m_scene.RegionInfo.RegionID.ToString() + "_" + lastMapRefresh.ToString();
992 asset.Metadata.Description = m_scene.RegionInfo.RegionName;
993
994 asset.Metadata.Type = 0;
995 asset.Metadata.Temporary = temporary;
996 m_scene.CommsManager.AssetCache.AddAsset(asset);
997 }
938 998
939 private void MakeRootAgent(ScenePresence avatar) 999 private void MakeRootAgent(ScenePresence avatar)
940 { 1000 {