mirror of
https://github.com/opensim/opensim.git
synced 2026-08-06 17:32:42 +08:00
save/load environments to/from oars
This commit is contained in:
@@ -1039,10 +1039,10 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
private bool LoadRegionSettings(Scene scene, string settingsPath, byte[] data, DearchiveScenesInfo dearchivedScenes)
|
||||
{
|
||||
RegionSettings loadedRegionSettings;
|
||||
|
||||
ViewerEnvironment regionEnv = null;
|
||||
try
|
||||
{
|
||||
loadedRegionSettings = RegionSettingsSerializer.Deserialize(data);
|
||||
loadedRegionSettings = RegionSettingsSerializer.Deserialize(data, out regionEnv);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -1051,7 +1051,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
settingsPath, e);
|
||||
return false;
|
||||
}
|
||||
|
||||
scene.RegionEnvironment = regionEnv;
|
||||
RegionSettings currentRegionSettings = scene.RegionInfo.RegionSettings;
|
||||
|
||||
currentRegionSettings.AgentLimit = loadedRegionSettings.AgentLimit;
|
||||
|
||||
@@ -321,6 +321,16 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
if (regionSettings.TerrainTexture4 != RegionSettings.DEFAULT_TERRAIN_TEXTURE_4)
|
||||
assetUuids[regionSettings.TerrainTexture4] = (sbyte)AssetType.Texture;
|
||||
|
||||
if(scene.RegionEnvironment != null)
|
||||
scene.RegionEnvironment.GatherAssets(assetUuids);
|
||||
|
||||
List<ILandObject> landObjects = scene.LandChannel.AllParcels();
|
||||
foreach (ILandObject lo in landObjects)
|
||||
{
|
||||
if(lo.LandData != null && lo.LandData.Environment != null)
|
||||
lo.LandData.Environment.GatherAssets(assetUuids);
|
||||
}
|
||||
|
||||
Save(scene, sceneObjects, regionDir);
|
||||
GC.Collect();
|
||||
}
|
||||
@@ -572,7 +582,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
// Write out region settings
|
||||
string settingsPath = String.Format("{0}{1}{2}.xml",
|
||||
regionDir, ArchiveConstants.SETTINGS_PATH, scene.RegionInfo.RegionName);
|
||||
m_archiveWriter.WriteFile(settingsPath, RegionSettingsSerializer.Serialize(scene.RegionInfo.RegionSettings));
|
||||
m_archiveWriter.WriteFile(settingsPath, RegionSettingsSerializer.Serialize(scene.RegionInfo.RegionSettings, scene.RegionEnvironment));
|
||||
|
||||
m_log.InfoFormat("[ARCHIVER]: Adding parcel settings to archive.");
|
||||
|
||||
|
||||
@@ -657,7 +657,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
|
||||
rs.TelehubObject = UUID.Parse("00000000-0000-0000-0000-111111111111");
|
||||
rs.AddSpawnPoint(SpawnPoint.Parse("1,-2,0.33"));
|
||||
|
||||
tar.WriteFile(ArchiveConstants.SETTINGS_PATH + "region1.xml", RegionSettingsSerializer.Serialize(rs));
|
||||
tar.WriteFile(ArchiveConstants.SETTINGS_PATH + "region1.xml", RegionSettingsSerializer.Serialize(rs, null));
|
||||
|
||||
tar.Close();
|
||||
|
||||
|
||||
@@ -699,9 +699,9 @@ namespace OpenSim.Region.CoreModules.World.LightShare
|
||||
{
|
||||
if(m_scene.RegionInfo.EstateSettings.AllowEnvironmentOverride)
|
||||
{
|
||||
ILandObject land = m_scene.LandChannel.GetLandObject(sp.AbsolutePosition.X, sp.AbsolutePosition.Y);
|
||||
if (land != null && land.LandData != null && land.LandData.Environment != null)
|
||||
VEnv = land.LandData.Environment;
|
||||
ILandObject land = m_scene.LandChannel.GetLandObject(sp.AbsolutePosition.X, sp.AbsolutePosition.Y);
|
||||
if (land != null && land.LandData != null && land.LandData.Environment != null)
|
||||
VEnv = land.LandData.Environment;
|
||||
}
|
||||
if(VEnv == null)
|
||||
VEnv = GetRegionEnvironment();
|
||||
@@ -837,6 +837,7 @@ namespace OpenSim.Region.CoreModules.World.LightShare
|
||||
return OSDParser.SerializeLLSDNotationToBytes(osddata,true);
|
||||
}
|
||||
|
||||
|
||||
public List<byte[]> MakeLightShareData()
|
||||
{
|
||||
if(m_scene.RegionEnvironment == null)
|
||||
|
||||
Reference in New Issue
Block a user