aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs')
-rw-r--r--OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs33
1 files changed, 26 insertions, 7 deletions
diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs
index 58e8f55..7c1d015 100644
--- a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs
+++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs
@@ -204,9 +204,7 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
204 204
205 // Get the prim's default texture. This will be used for faces which don't have their own texture 205 // Get the prim's default texture. This will be used for faces which don't have their own texture
206 assetUuids[textureEntry.DefaultTexture.TextureID] = 1; 206 assetUuids[textureEntry.DefaultTexture.TextureID] = 1;
207 207
208 if (part.Shape.SculptTexture != UUID.Zero)
209 assetUuids[part.Shape.SculptTexture] = 1;
210 // XXX: Not a great way to iterate through face textures, but there's no 208 // XXX: Not a great way to iterate through face textures, but there's no
211 // other method available to tell how many faces there actually are 209 // other method available to tell how many faces there actually are
212 //int i = 0; 210 //int i = 0;
@@ -218,7 +216,12 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
218 assetUuids[texture.TextureID] = 1; 216 assetUuids[texture.TextureID] = 1;
219 } 217 }
220 } 218 }
219
220 // If the prim is a sculpt then preserve this information too
221 if (part.Shape.SculptTexture != UUID.Zero)
222 assetUuids[part.Shape.SculptTexture] = 1;
221 223
224 // Now analyze this prim's inventory items to preserve all the uuids that they reference
222 foreach (TaskInventoryItem tii in part.TaskInventory.Values) 225 foreach (TaskInventoryItem tii in part.TaskInventory.Values)
223 { 226 {
224 //m_log.DebugFormat("[ARCHIVER]: Analysing item asset type {0}", tii.Type); 227 //m_log.DebugFormat("[ARCHIVER]: Analysing item asset type {0}", tii.Type);
@@ -239,10 +242,10 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
239 { 242 {
240 GetSceneObjectAssetUuids(tii.AssetID, assetUuids); 243 GetSceneObjectAssetUuids(tii.AssetID, assetUuids);
241 } 244 }
242 else 245 //else
243 { 246 //{
244 //m_log.DebugFormat("[ARCHIVER]: Recording asset {0} in object {1}", tii.AssetID, part.UUID); 247 //m_log.DebugFormat("[ARCHIVER]: Recording asset {0} in object {1}", tii.AssetID, part.UUID);
245 } 248 //}
246 } 249 }
247 } 250 }
248 } 251 }
@@ -283,6 +286,21 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
283 m_log.DebugFormat( 286 m_log.DebugFormat(
284 "[ARCHIVER]: {0} scene objects to serialize requiring save of {1} assets", 287 "[ARCHIVER]: {0} scene objects to serialize requiring save of {1} assets",
285 sceneObjects.Count, assetUuids.Count); 288 sceneObjects.Count, assetUuids.Count);
289
290 // Make sure that we also request terrain texture assets
291 RegionSettings regionSettings = m_scene.RegionInfo.RegionSettings;
292
293 if (regionSettings.TerrainTexture1 != RegionSettings.DEFAULT_TERRAIN_TEXTURE_1)
294 assetUuids[regionSettings.TerrainTexture1] = 1;
295
296 if (regionSettings.TerrainTexture2 != RegionSettings.DEFAULT_TERRAIN_TEXTURE_2)
297 assetUuids[regionSettings.TerrainTexture2] = 1;
298
299 if (regionSettings.TerrainTexture3 != RegionSettings.DEFAULT_TERRAIN_TEXTURE_3)
300 assetUuids[regionSettings.TerrainTexture3] = 1;
301
302 if (regionSettings.TerrainTexture4 != RegionSettings.DEFAULT_TERRAIN_TEXTURE_4)
303 assetUuids[regionSettings.TerrainTexture4] = 1;
286 304
287 // Asynchronously request all the assets required to perform this archive operation 305 // Asynchronously request all the assets required to perform this archive operation
288 ArchiveWriteRequestExecution awre 306 ArchiveWriteRequestExecution awre
@@ -290,8 +308,9 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
290 sceneObjects, 308 sceneObjects,
291 m_scene.RequestModuleInterface<ITerrainModule>(), 309 m_scene.RequestModuleInterface<ITerrainModule>(),
292 m_scene.RequestModuleInterface<IRegionSerialiserModule>(), 310 m_scene.RequestModuleInterface<IRegionSerialiserModule>(),
293 m_scene.RegionInfo.RegionName, 311 m_scene.RegionInfo,
294 m_savePath); 312 m_savePath);
313
295 new AssetsRequest(assetUuids.Keys, m_scene.AssetCache, awre.ReceivedAllAssets).Execute(); 314 new AssetsRequest(assetUuids.Keys, m_scene.AssetCache, awre.ReceivedAllAssets).Execute();
296 } 315 }
297 } 316 }