From 2a90f78fe16933fb33d5392610ff17046816ad04 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Thu, 17 Oct 2019 23:33:11 +0100 Subject: add LSL_Integer osIsNotValidNumber(LSL_Float v) --- .../Shared/Api/Implementation/OSSL_Api.cs | 53 ++++++++++++---------- .../ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | 1 + .../Shared/Api/Runtime/LSL_Constants.cs | 2 +- .../ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | 5 ++ .../Shared/Instance/Tests/CoopTerminationTests.cs | 5 ++ 5 files changed, 40 insertions(+), 26 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 3360b8d..641975a 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -25,38 +25,29 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.Concurrent; -using System.IO; -using System.Reflection; -using System.Runtime.Remoting.Lifetime; -using System.Text; -using System.Net; -using System.Threading; -using System.Xml; using log4net; +using Nini.Config; using OpenMetaverse; using OpenMetaverse.StructuredData; -using Nini.Config; -using OpenSim; using OpenSim.Framework; - -using OpenSim.Framework.Console; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; using OpenSim.Region.Framework.Scenes.Scripting; -using OpenSim.Region.ScriptEngine.Shared; -using OpenSim.Region.ScriptEngine.Shared.Api.Plugins; -using OpenSim.Region.ScriptEngine.Shared.ScriptBase; using OpenSim.Region.ScriptEngine.Interfaces; using OpenSim.Region.ScriptEngine.Shared.Api.Interfaces; -using TPFlags = OpenSim.Framework.Constants.TeleportFlags; +using OpenSim.Region.ScriptEngine.Shared.ScriptBase; +using OpenSim.Services.Connectors.Hypergrid; using OpenSim.Services.Interfaces; -using GridRegion = OpenSim.Services.Interfaces.GridRegion; +using System; +using System.Collections; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Reflection; +using System.Runtime.Remoting.Lifetime; +using System.Text; using System.Text.RegularExpressions; - +using System.Threading; +using GridRegion = OpenSim.Services.Interfaces.GridRegion; using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat; using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger; using LSL_Key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; @@ -65,7 +56,7 @@ using LSL_Rotation = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion; using LSL_String = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3; using PermissionMask = OpenSim.Framework.PermissionMask; -using OpenSim.Services.Connectors.Hypergrid; +using TPFlags = OpenSim.Framework.Constants.TeleportFlags; namespace OpenSim.Region.ScriptEngine.Shared.Api { @@ -187,10 +178,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if(m_osslconfig == null) m_osslconfig = m_ScriptEngine.Config; - if (m_osslconfig.GetBoolean("AllowOSFunctions", false)) + if (m_osslconfig.GetBoolean("AllowOSFunctions", true)) { - m_OSFunctionsEnabled = true; - // m_log.Warn("[OSSL] OSSL FUNCTIONS ENABLED"); + m_OSFunctionsEnabled = true; + // m_log.Warn("[OSSL] OSSL FUNCTIONS ENABLED"); } m_PermissionErrortoOwner = m_osslconfig.GetBoolean("PermissionErrorToOwner", m_PermissionErrortoOwner); @@ -5674,5 +5665,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api m_ScriptEngine.ApiResetScript(me); } + + public LSL_Integer osIsNotValidNumber(LSL_Float v) + { + double d = v; + if (double.IsNaN(d)) + return 1; + if (double.IsNegativeInfinity(d)) + return 2; + if (double.IsPositiveInfinity(d)) + return 3; + return 0; + } } } \ No newline at end of file diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index afbbe6f..2bb71e9 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs @@ -558,5 +558,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces LSL_Rotation osSlerp(LSL_Rotation a, LSL_Rotation b, LSL_Float amount); void osResetAllScripts(LSL_Integer AllLinkset); + LSL_Integer osIsNotValidNumber(LSL_Float v); } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs index e1c421f..f7acafe 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs @@ -35,7 +35,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase public partial class ScriptBaseClass { // SCRIPTS CONSTANTS - public static readonly LSLInteger OS_APIVERSION = 9; + public static readonly LSLInteger OS_APIVERSION = 10; public static readonly LSLInteger TRUE = 1; public static readonly LSLInteger FALSE = 0; diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index e13b6b0..9745403 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs @@ -1416,5 +1416,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase { m_OSSL_Functions.osResetAllScripts(allLinkSet); } + + public LSL_Integer osIsNotValidNumber(LSL_Float v) + { + return m_OSSL_Functions.osIsNotValidNumber(v); + } } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/Tests/CoopTerminationTests.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/Tests/CoopTerminationTests.cs index 8138117..a9671ae 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/Tests/CoopTerminationTests.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/Tests/CoopTerminationTests.cs @@ -106,6 +106,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance.Tests // has an effect - without it tests will fail due to a 120 second wait for the event to finish. xEngineConfig.Set("WaitForEventCompletionOnScriptStop", 120000); + IConfig config = configSource.AddConfig("OSSL"); + config.Set("DebuggerSafe", false); + config.Set("AllowOSFunctions", "true"); + config.Set("OSFunctionThreatLevel", "Severe"); + m_scene = new SceneHelpers().SetupScene("My Test", TestHelpers.ParseTail(0x9999), 1000, 1000, configSource); SceneHelpers.SetupSceneModules(m_scene, configSource, m_xEngine); m_scene.StartScripts(); -- cgit v1.1