diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 53d6215273..7cd4573ad7 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -2068,7 +2068,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return GetColor(m_host, face); } - protected static LSL_Vector GetColor(SceneObjectPart part, int face) + public LSL_Vector GetColor(SceneObjectPart part, int face) { Primitive.TextureEntry tex = part.Shape.Textures; Color4 texcolor; diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 7ea1e5f8c9..1ccbc4c7d2 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -6571,5 +6571,23 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } return ret.ToString(); } + + public LSL_Vector osGetLinkColor(LSL_Integer link, LSL_Integer face) + { + SceneObjectPart linkedPart = link.value switch + { + ScriptBaseClass.LINK_ROOT => m_host.ParentGroup.RootPart, + ScriptBaseClass.LINK_THIS => m_host, + _ => m_host.ParentGroup.GetLinkNumPart(link.value) + }; + + if (linkedPart != null) + { + InitLSL(); + return m_LSL_Api.GetColor(linkedPart, face.value); + } + + return LSL_Vector.Zero; + } } } \ 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 72af1bc870..ea38af8a65 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs @@ -626,5 +626,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces LSL_String osAESEncryptTo(string secret, string plainText, string ivString); LSL_String osAESDecrypt(string secret, string encryptedText); LSL_String osAESDecryptFrom(string secret, string encryptedText, string ivString); + vector osGetLinkColor(LSL_Integer linknum, LSL_Integer face); } } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index 7895b02332..a76385c48d 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs @@ -1802,5 +1802,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase return m_OSSL_Functions.osAESDecryptFrom(secret, encryptedText, ivString); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public vector osGetLinkColor(LSL_Integer link, LSL_Integer face) + { + return m_OSSL_Functions.osGetLinkColor(link, face); + } } }