save/load environments to/from oars

This commit is contained in:
UbitUmarov
2020-06-22 15:46:39 +01:00
parent 7b77609537
commit 8fe2cd6c46
13 changed files with 146 additions and 36 deletions

View File

@@ -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;

View File

@@ -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.");

View File

@@ -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();

View File

@@ -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)