From f8d9ccc70ec894e4cecfe24f35067ccc80ecfe50 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Sun, 29 Jun 2008 19:53:33 +0000 Subject: * Save terrain information in archive * Not yet reloading * Terrain saving will be optional a little further down the line --- .../World/Archiver/ArchiveWriteRequestExecution.cs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestExecution.cs') diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestExecution.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestExecution.cs index 3ef8149..2c43ffd 100644 --- a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestExecution.cs +++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestExecution.cs @@ -27,12 +27,14 @@ using System; using System.Collections.Generic; +using System.IO; using System.Reflection; using libsecondlife; using log4net; using OpenSim.Framework; using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.Environment.Modules.World.Serialiser; +using OpenSim.Region.Environment.Modules.World.Terrain; using OpenSim.Region.Environment.Scenes; namespace OpenSim.Region.Environment.Modules.World.Archiver @@ -49,15 +51,23 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + protected ITerrainModule m_terrainModule; protected IRegionSerialiser m_serialiser; protected List m_sceneObjects; + protected string m_sceneName; protected string m_savePath; public ArchiveWriteRequestExecution( - List sceneObjects, IRegionSerialiser serialiser, string savePath) + List sceneObjects, + ITerrainModule terrainModule, + IRegionSerialiser serialiser, + string sceneName, + string savePath) { m_sceneObjects = sceneObjects; + m_terrainModule = terrainModule; m_serialiser = serialiser; + m_sceneName = sceneName; m_savePath = savePath; } @@ -67,6 +77,14 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver TarArchiveWriter archive = new TarArchiveWriter(); + // Write out terrain + string terrainPath = String.Format("{0}{1}.png", ArchiveConstants.TERRAINS_PATH, m_sceneName); + MemoryStream ms = new MemoryStream(); + m_terrainModule.SaveToStream(terrainPath, ms); + archive.AddFile(terrainPath, ms.ToArray()); + ms.Close(); + + // Write out scene object metadata foreach (SceneObjectGroup sceneObject in m_sceneObjects) { //m_log.DebugFormat("[ARCHIVER]: Saving {0} {1}, {2}", entity.Name, entity.UUID, entity.GetType()); @@ -84,6 +102,7 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver archive.AddFile(filename, serializedObject); } + // Write out assets AssetsArchiver assetsArchiver = new AssetsArchiver(assets); assetsArchiver.Archive(archive); -- cgit v1.1