diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 7ecd2625f0..c1ed588822 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -5308,10 +5308,16 @@ namespace OpenSim.Region.Framework.Scenes public Color4 GetTextColor() { - Color color = Color; + // note that Alpha is inverted for lludp + Color color = m_color; return new Color4(color.R, color.G, color.B, (byte)(0xFF - color.A)); } + public float GetTextAlpha() + { + return m_color.A * 0.0039215686f; + } + public void ResetOwnerChangeFlag() { List inv = Inventory.GetInventoryList(); diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 0a96d050a3..57a2e8647e 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -12070,7 +12070,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api res.Add(new LSL_Vector(textColor.R, textColor.G, textColor.B)); - res.Add(new LSL_Float(textColor.A)); + res.Add(new LSL_Float(part.GetTextAlpha())); break; case ScriptBaseClass.PRIM_NAME: @@ -15415,7 +15415,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api ret.Add(new LSL_Vector(textColor.R, textColor.G, textColor.B)); break; case ScriptBaseClass.OBJECT_TEXT_ALPHA: - ret.Add(new LSL_Float(obj.GetTextColor().A)); + ret.Add(new LSL_Float(obj.GetTextAlpha())); break; default: // Invalid or unhandled constant.