diff --git a/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs b/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs index 4132b2be7b..f547251c8d 100644 --- a/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs +++ b/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs @@ -44,21 +44,25 @@ namespace OpenSim.Framework.Serialization.External /// Deserialize settings /// /// + /// + /// The Estate Settings stored in the archive will be merged into this object /// /// - public static RegionSettings Deserialize(byte[] serializedSettings, out ViewerEnvironment regionEnv) + public static RegionSettings Deserialize(byte[] serializedSettings, out ViewerEnvironment regionEnv, EstateSettings estateSettings) { // encoding is wrong. old oars seem to be on utf-16 - return Deserialize(Encoding.ASCII.GetString(serializedSettings, 0, serializedSettings.Length), out regionEnv); + return Deserialize(Encoding.ASCII.GetString(serializedSettings, 0, serializedSettings.Length), out regionEnv, estateSettings); } /// /// Deserialize settings /// /// + /// + /// The Estate Settings stored in the archive will be merged into this object /// /// - public static RegionSettings Deserialize(string serializedSettings, out ViewerEnvironment regionEnv) + public static RegionSettings Deserialize(string serializedSettings, out ViewerEnvironment regionEnv, EstateSettings estateSettings) { RegionSettings settings = new RegionSettings(); regionEnv = null; @@ -237,13 +241,36 @@ namespace OpenSim.Framework.Serialization.External } } + if (xtr.IsStartElement("Estate")) + { + if (xtr.IsEmptyElement) + xtr.Read(); + else + { + xtr.ReadStartElement("Estate"); + while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement) + { + switch (xtr.Name) + { + case "AllowDirectTeleport": + estateSettings.AllowDirectTeleport = bool.Parse(xtr.ReadElementContentAsString()); + break; + case "AllowEnvironmentOverride": + estateSettings.AllowEnvironmentOverride = bool.Parse(xtr.ReadElementContentAsString()); + break; + } + } + xtr.ReadEndElement(); + } + } + xtr.Close(); sr.Close(); return settings; } - public static string Serialize(RegionSettings settings, ViewerEnvironment RegionEnv) + public static string Serialize(RegionSettings settings, ViewerEnvironment RegionEnv, EstateSettings estateSettings) { StringWriter sw = new StringWriter(); XmlTextWriter xtw = new XmlTextWriter(sw); @@ -308,6 +335,11 @@ namespace OpenSim.Framework.Serialization.External xtw.WriteEndElement(); } + xtw.WriteStartElement("Estate"); + xtw.WriteElementString("AllowDirectTeleport", estateSettings.AllowDirectTeleport.ToString()); + xtw.WriteElementString("AllowEnvironmentOverride", estateSettings.AllowEnvironmentOverride.ToString()); + xtw.WriteEndElement(); + xtw.WriteEndElement(); xtw.Close(); diff --git a/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs b/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs index 80215e5e6d..4f3f2ddde3 100644 --- a/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs +++ b/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs @@ -130,7 +130,7 @@ namespace OpenSim.Framework.Serialization.Tests TestHelpers.InMethod(); // log4net.Config.XmlConfigurator.Configure(); - RegionSettings deserRs = RegionSettingsSerializer.Deserialize(m_serializedRs, out ViewerEnvironment dummy); + RegionSettings deserRs = RegionSettingsSerializer.Deserialize(m_serializedRs, out ViewerEnvironment dummy, new EstateSettings()); Assert.That(deserRs, Is.Not.Null); Assert.That(deserRs.TerrainTexture2, Is.EqualTo(m_rs.TerrainTexture2)); Assert.That(deserRs.DisablePhysics, Is.EqualTo(m_rs.DisablePhysics)); diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index fd8f72b8cf..b7f5808c17 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -650,6 +650,8 @@ namespace OpenSim.Framework.Servers.HttpServer IRequestHandler requestHandler = null; + byte[] responseData = null; + try { // OpenSim.Framework.WebUtil.OSHeaderRequestID @@ -671,6 +673,7 @@ namespace OpenSim.Framework.Servers.HttpServer request.InputStream.Dispose(); requestEndTick = Environment.TickCount; + responseData = response.RawBuffer; response.Send(); return; } @@ -692,6 +695,7 @@ namespace OpenSim.Framework.Servers.HttpServer request.InputStream.Dispose(); requestEndTick = Environment.TickCount; + responseData = response.RawBuffer; response.Send(); return; } @@ -736,6 +740,7 @@ namespace OpenSim.Framework.Servers.HttpServer request.InputStream.Dispose(); requestEndTick = Environment.TickCount; + responseData = response.RawBuffer; response.Send(); return; } @@ -744,11 +749,15 @@ namespace OpenSim.Framework.Servers.HttpServer if (TryGetSimpleStreamHandler(path, out ISimpleStreamHandler hdr)) { + if (DebugLevel >= 3) + LogIncomingToStreamHandler(request, hdr); + hdr.Handle(request, response); if (request.InputStream != null && request.InputStream.CanRead) request.InputStream.Dispose(); requestEndTick = Environment.TickCount; + responseData = response.RawBuffer; response.Send(); return; } @@ -898,6 +907,7 @@ namespace OpenSim.Framework.Servers.HttpServer requestEndTick = Environment.TickCount; buffer = null; + responseData = response.RawBuffer; response.Send(); } catch (SocketException e) @@ -921,6 +931,7 @@ namespace OpenSim.Framework.Servers.HttpServer try { response.StatusCode =(int)HttpStatusCode.InternalServerError; + responseData = response.RawBuffer; response.Send(); } catch {} @@ -951,6 +962,19 @@ namespace OpenSim.Framework.Servers.HttpServer Port, tickdiff); } + + if ((DebugLevel >= 5) && (responseData != null)) + { + string output = Encoding.UTF8.GetString(responseData); + if (DebugLevel == 5) + { + if (output.Length > WebUtil.MaxRequestDiagLength) + output = output.Substring(0, WebUtil.MaxRequestDiagLength) + "..."; + } + m_log.DebugFormat("[LOGHTTP] RESPONSE {0}: {1}", RequestNumber, output); + } + + responseData = null; } } @@ -970,6 +994,21 @@ namespace OpenSim.Framework.Servers.HttpServer LogIncomingInDetail(request); } + private void LogIncomingToStreamHandler(OSHttpRequest request, ISimpleStreamHandler requestHandler) + { + m_log.DebugFormat( + "[LOGHTTP] HTTP IN {0} :{1} stream handler {2} {3} {4} from {5}", + RequestNumber, + Port, + request.HttpMethod, + request.Url.PathAndQuery, + requestHandler.Name, + request.RemoteIPEndPoint); + + if (DebugLevel >= 5) + LogIncomingInDetail(request); + } + private void LogIncomingToContentTypeHandler(OSHttpRequest request) { m_log.DebugFormat( diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs index 68231a91b6..494ac8065f 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs @@ -1044,7 +1044,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver ViewerEnvironment regionEnv = null; try { - loadedRegionSettings = RegionSettingsSerializer.Deserialize(data, out regionEnv); + loadedRegionSettings = RegionSettingsSerializer.Deserialize(data, out regionEnv, scene.RegionInfo.EstateSettings); } catch (Exception e) { @@ -1104,6 +1104,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver currentRegionSettings.CacheID = UUID.Random(); currentRegionSettings.Save(); + scene.EstateDataService.StoreEstateSettings(scene.RegionInfo.EstateSettings); + IEstateModule estateModule = scene.RequestModuleInterface(); if (estateModule != null) estateModule.sendRegionHandshakeToAll(); diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs index 2511c103e2..d62eecb0a9 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveWriteRequest.cs @@ -579,7 +579,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, scene.RegionEnvironment)); + m_archiveWriter.WriteFile(settingsPath, RegionSettingsSerializer.Serialize(scene.RegionInfo.RegionSettings, scene.RegionEnvironment, scene.RegionInfo.EstateSettings)); m_log.InfoFormat("[ARCHIVER]: Adding parcel settings to archive."); diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs index 85eaaf0434..514a1596ac 100644 --- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs +++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs @@ -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, null)); + tar.WriteFile(ArchiveConstants.SETTINGS_PATH + "region1.xml", RegionSettingsSerializer.Serialize(rs, null, new EstateSettings())); tar.Close(); diff --git a/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs b/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs index 5df9c1e944..06baea312e 100644 --- a/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs +++ b/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs @@ -65,10 +65,10 @@ namespace OpenSim.Region.CoreModules.World.LightShare private ILandChannel m_landChannel; private static ViewerEnvironment m_DefaultEnv = null; - // 1/1 night day ratio - //private static readonly string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a91"; - // 3/1 night day ratio - private static string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a92"; + // 1/1 day-to-night ratio + //private static readonly string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a91"; // Default Daycycle + // 3/1 day-to-night ratio + private static string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a92"; // Default Daycycle (More Daylight) private static UUID m_defaultDayAssetUUID = new UUID("5646d39e-d3d7-6aff-ed71-30fc87d64a92"); //private static string m_defaultSkyAssetID = "3ae23978-ac82-bcf3-a9cb-ba6e52dcb9ad"; private static UUID m_defaultSkyAssetUUID = new UUID("3ae23978-ac82-bcf3-a9cb-ba6e52dcb9ad"); @@ -168,10 +168,10 @@ namespace OpenSim.Region.CoreModules.World.LightShare m_DefaultEnv = new ViewerEnvironment(); m_DefaultEnv.CycleFromOSD(oenv); } - catch ( Exception e) + catch (Exception e) { m_DefaultEnv = null; - m_log.WarnFormat("[Environment {0}]: failed to decode default environment asset: {1}", m_scene.Name, e.Message); + m_log.Warn(string.Format("[Environment {0}] failed to decode default environment asset ", m_scene.Name), e); } } } @@ -185,16 +185,22 @@ namespace OpenSim.Region.CoreModules.World.LightShare { OSD oenv = OSDParser.Deserialize(senv); ViewerEnvironment VEnv = new ViewerEnvironment(); - if(oenv is OSDArray) + if (oenv is OSDArray) + { VEnv.FromWLOSD(oenv); + StoreOnRegion(VEnv); + m_log.InfoFormat("[Environment {0}] migrated WindLight environment settings to EEP", m_scene.Name); + } else + { VEnv.FromOSD(oenv); + } scene.RegionEnvironment = VEnv; m_regionEnvVersion = VEnv.version; } catch (Exception e) { - m_log.ErrorFormat("[Environment {0}] failed to load initial Environment {1}", m_scene.Name, e.Message); + m_log.Error(string.Format("[Environment {0}] failed to load initial Environment ", m_scene.Name), e); scene.RegionEnvironment = null; m_regionEnvVersion = -1; } @@ -246,7 +252,7 @@ namespace OpenSim.Region.CoreModules.World.LightShare } catch (Exception e) { - m_log.ErrorFormat("[Environment {0}] failed to store Environment {1}", m_scene.Name, e.Message); + m_log.Error(string.Format("[Environment {0}] failed to store Environment ", m_scene.Name), e); } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index fbd05cd75c..09cde6964b 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -6080,7 +6080,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return -2; ScenePresence npcSP = World.GetScenePresence(npc); - if(npc == null) + if((npcSP == null) || !npcSP.IsNPC) return -3; if (!UUID.TryParse(objkey, out UUID obj)) diff --git a/bin/ScriptSyntax.xml b/bin/ScriptSyntax.xml index ffbbe67658..bd130952f9 100644 --- a/bin/ScriptSyntax.xml +++ b/bin/ScriptSyntax.xml @@ -1,4 +1,4 @@ -cd5e081a-b88a-07b6-21a5-612aab0b3398 +727420c2-45b3-4627-8c6e-5c478e6a736e llsd-lsl-syntax-version2 controls @@ -7196,6 +7196,16 @@ cd5e081a-b88a-07b6-21a5-612aab0b3398 notecardtypestring + osNpcLookAt + + arguments + npctypekey + typetypeinteger + targettypekey + offsettypevector + + tooltipMakes an NPC look at a target. Other effects besides looking are also supported. + osNpcMoveTo arguments @@ -7449,6 +7459,19 @@ cd5e081a-b88a-07b6-21a5-612aab0b3398 daycycletypestring + osReplaceRegionEnvironment + + returninteger + arguments + transitiontypeinteger + daycycletypestring + daylentypefloat + dayoffsettypefloat + altitude1typefloat + altitude2typefloat + altitude3typefloat + + osReplaceString returnstring diff --git a/bin/assets/SettingsAssetSet/SettingsAssetSet.xml b/bin/assets/SettingsAssetSet/SettingsAssetSet.xml index 0d0afa055a..3f8ddef2ff 100644 --- a/bin/assets/SettingsAssetSet/SettingsAssetSet.xml +++ b/bin/assets/SettingsAssetSet/SettingsAssetSet.xml @@ -1,11 +1,10 @@ -
+
- +
-
@@ -19,35 +18,24 @@
- -
- - - - -
-
-
-
-
@@ -55,5 +43,31 @@
+
+ + + + +
+ +
+ + + + +
+
+ + + + +
+
+ + + + +
+ diff --git a/bin/assets/SettingsAssetSet/Textures/Altocumulus_Clouds.j2c b/bin/assets/SettingsAssetSet/Textures/Altocumulus_Clouds.j2c new file mode 100644 index 0000000000..aeeedfee0b Binary files /dev/null and b/bin/assets/SettingsAssetSet/Textures/Altocumulus_Clouds.j2c differ diff --git a/bin/assets/SettingsAssetSet/Textures/Cumulonimbus_Clouds.j2c b/bin/assets/SettingsAssetSet/Textures/Cumulonimbus_Clouds.j2c new file mode 100644 index 0000000000..e1c057d88a Binary files /dev/null and b/bin/assets/SettingsAssetSet/Textures/Cumulonimbus_Clouds.j2c differ diff --git a/bin/assets/SettingsAssetSet/Textures/Layered_Clouds.j2c b/bin/assets/SettingsAssetSet/Textures/Layered_Clouds.j2c new file mode 100644 index 0000000000..e045bef2df Binary files /dev/null and b/bin/assets/SettingsAssetSet/Textures/Layered_Clouds.j2c differ diff --git a/bin/assets/SettingsAssetSet/DefaultWater.dat b/bin/assets/SettingsAssetSet/Water/DefaultWater.dat similarity index 100% rename from bin/assets/SettingsAssetSet/DefaultWater.dat rename to bin/assets/SettingsAssetSet/Water/DefaultWater.dat diff --git a/bin/inventory/SettingsLibrary/Folders.xml b/bin/inventory/SettingsLibrary/Folders.xml index 2a51762848..bf17d19482 100644 --- a/bin/inventory/SettingsLibrary/Folders.xml +++ b/bin/inventory/SettingsLibrary/Folders.xml @@ -1,28 +1,32 @@ - -
- +
- +
-
+
- - + +
-
+
- - + + +
+
+ + + +
diff --git a/bin/inventory/SettingsLibrary/Items.xml b/bin/inventory/SettingsLibrary/Items.xml index 991ed7c86a..2da44c565d 100644 --- a/bin/inventory/SettingsLibrary/Items.xml +++ b/bin/inventory/SettingsLibrary/Items.xml @@ -16,19 +16,19 @@ - +
-
+
- - + + @@ -78,4 +78,70 @@
+
+ + + + + + + + +
+ +
+ + + + + + + +
+
+ + + + + + + +
+
+ + + + + + + +
+
+ + + + + + + +
+
+ + + + + + + +
+
+ + + + + + + +
+