diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 1f7443a27c..b305802228 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -79,7 +79,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
///
/// Contains all LSL ll-functions. This class will be in Default AppDomain.
///
- public class LSL_Api : MarshalByRefObject, ILSL_Api, IScriptApi
+ public class LSL_Api : ILSL_Api, IScriptApi
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
index 2e1a55e6f7..c9f50ced2f 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
@@ -54,7 +54,7 @@ using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
namespace OpenSim.Region.ScriptEngine.Shared.Api
{
[Serializable]
- public class LS_Api : MarshalByRefObject, ILS_Api, IScriptApi
+ public class LS_Api : ILS_Api, IScriptApi
{
internal IScriptEngine m_ScriptEngine;
internal SceneObjectPart m_host;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/MOD_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/MOD_Api.cs
index f068d873fe..67eba37d43 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/MOD_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/MOD_Api.cs
@@ -54,7 +54,7 @@ using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
namespace OpenSim.Region.ScriptEngine.Shared.Api
{
[Serializable]
- public class MOD_Api : MarshalByRefObject, IMOD_Api, IScriptApi
+ public class MOD_Api : IMOD_Api, IScriptApi
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 57ff002409..e7989d4809 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -134,7 +134,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
}
[Serializable]
- public class OSSL_Api : MarshalByRefObject, IOSSL_Api, IScriptApi
+ public class OSSL_Api : IOSSL_Api, IScriptApi
{
public const string GridInfoServiceConfigSectionName = "GridInfoService";
@@ -5541,6 +5541,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return (item == null) ? LSL_String.Empty : item.Description;
}
+ public LSL_Key osGetLinkInventoryKey(LSL_Integer linkNumber, LSL_String name, LSL_Integer type)
+ {
+ SceneObjectPart part = GetSingleLinkPart(linkNumber);
+ if(part == null)
+ return LSL_String.NullKey;
+
+ TaskInventoryItem item = part.Inventory.GetInventoryItem(name, type);
+ if (item is null)
+ return LSL_String.NullKey;
+
+ if ((item.CurrentPermissions
+ & (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify))
+ == (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify))
+ {
+ return new LSL_Key(item.AssetID.ToString());
+ }
+
+ return LSL_String.NullKey;
+ }
+
public LSL_Key osGetLinkInventoryItemKey(LSL_Integer linkNumber, LSL_String name)
{
SceneObjectPart part = GetSingleLinkPart(linkNumber);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index fb7ad789dc..72af1bc870 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -561,6 +561,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
LSL_Integer osApproxEquals(rotation ra, rotation rb, LSL_Float margin);
LSL_Key osGetInventoryLastOwner(LSL_String itemNameOrId);
LSL_Key osGetInventoryItemKey(LSL_String name);
+ LSL_Key osGetLinkInventoryKey(LSL_Integer linkNumber, LSL_String name, LSL_Integer type);
LSL_Key osGetLinkInventoryItemKey(LSL_Integer linkNumber, LSL_String name);
LSL_String osGetInventoryName(LSL_Key itemId);
LSL_String osGetLinkInventoryName(LSL_Integer linkNumber, LSL_Key itemId);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
index f8bc0526bd..ed392758b5 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Stub.cs
@@ -43,7 +43,7 @@ using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
{
- public partial class ScriptBaseClass : MarshalByRefObject
+ public partial class ScriptBaseClass
{
public ILSL_Api m_LSL_Functions;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LS_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LS_Stub.cs
index cc7a285ff4..820dcfce85 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LS_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LS_Stub.cs
@@ -45,7 +45,7 @@ using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger;
namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
{
- public partial class ScriptBaseClass : MarshalByRefObject
+ public partial class ScriptBaseClass
{
public ILS_Api m_LS_Functions;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/MOD_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/MOD_Stub.cs
index 703924d348..aebf9c9636 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/MOD_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/MOD_Stub.cs
@@ -49,7 +49,7 @@ using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
{
- public partial class ScriptBaseClass : MarshalByRefObject
+ public partial class ScriptBaseClass
{
public IMOD_Api m_MOD_Functions;
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index 2fb00ce47a..7895b02332 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -44,7 +44,7 @@ using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger;
namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
{
- public partial class ScriptBaseClass : MarshalByRefObject
+ public partial class ScriptBaseClass
{
public IOSSL_Api m_OSSL_Functions;
@@ -1460,6 +1460,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
return m_OSSL_Functions.osGetInventoryItemKey(name);
}
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public LSL_Key osGetLinkInventoryKey(LSL_Integer linkNumber, LSL_String name, LSL_Integer type)
+ {
+ return m_OSSL_Functions.osGetLinkInventoryKey(linkNumber, name, type);
+ }
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public LSL_Key osGetLinkInventoryItemKey(LSL_Integer linkNumber, LSL_String name)
{
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/ScriptBase.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/ScriptBase.cs
index 36fabcb306..f99d858a1c 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/ScriptBase.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/ScriptBase.cs
@@ -33,7 +33,7 @@ using OpenSim.Region.ScriptEngine.Interfaces;
namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
{
- public partial class ScriptBaseClass : MarshalByRefObject, IScript
+ public partial class ScriptBaseClass : IScript
{
private Dictionary inits = new Dictionary();
public ScriptBaseClass()
diff --git a/OpenSim/Region/ScriptEngine/Shared/Helpers.cs b/OpenSim/Region/ScriptEngine/Shared/Helpers.cs
index c6fcf89445..38d9881168 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Helpers.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Helpers.cs
@@ -202,11 +202,7 @@ namespace OpenSim.Region.ScriptEngine.Shared
Owner = Key;
Position = new LSL_Types.Vector3(presence.AbsolutePosition);
- Rotation = new LSL_Types.Quaternion(
- presence.Rotation.X,
- presence.Rotation.Y,
- presence.Rotation.Z,
- presence.Rotation.W);
+ Rotation = new LSL_Types.Quaternion(presence.Rotation);
Velocity = new LSL_Types.Vector3(presence.Velocity);
Type = 0x01; // Avatar
diff --git a/bin/ScriptSyntax.xml b/bin/ScriptSyntax.xml
index 1699958814..a870b00391 100644
--- a/bin/ScriptSyntax.xml
+++ b/bin/ScriptSyntax.xml
@@ -1,4 +1,4 @@
-3c8d15ee-d2ba-11ee-ae64-406c8fbbb495
+9a2d5a5e-484a-40b0-82bc-092443b08ff7