Index: OpenSim/Framework/IClientAPI.cs =================================================================== --- OpenSim/Framework/IClientAPI.cs (revision 2322) +++ OpenSim/Framework/IClientAPI.cs (working copy) @@ -403,7 +403,7 @@ void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint); void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, - LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, + LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, byte[] color, uint parentID, byte[] particleSystem, LLQuaternion rotation); void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, Index: OpenSim/Region/ClientStack/ClientView.API.cs =================================================================== --- OpenSim/Region/ClientStack/ClientView.API.cs (revision 2322) +++ OpenSim/Region/ClientStack/ClientView.API.cs (working copy) @@ -1023,7 +1023,7 @@ public void SendPrimitiveToClient( ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, - LLUUID objectID, LLUUID ownerID, string text, uint parentID, byte[] particleSystem, LLQuaternion rotation) + LLUUID objectID, LLUUID ownerID, string text, byte[] color, uint parentID, byte[] particleSystem, LLQuaternion rotation) { ObjectUpdatePacket outPacket = new ObjectUpdatePacket(); outPacket.RegionData.RegionHandle = regionHandle; @@ -1036,6 +1036,10 @@ outPacket.ObjectData[0].FullID = objectID; outPacket.ObjectData[0].OwnerID = ownerID; outPacket.ObjectData[0].Text = Helpers.StringToField(text); + outPacket.ObjectData[0].TextColor[0] = color[0]; + outPacket.ObjectData[0].TextColor[1] = color[1]; + outPacket.ObjectData[0].TextColor[2] = color[2]; + outPacket.ObjectData[0].TextColor[3] = color[3]; outPacket.ObjectData[0].ParentID = parentID; outPacket.ObjectData[0].PSBlock = particleSystem; outPacket.ObjectData[0].ClickAction = 0; Index: OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs =================================================================== --- OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs (revision 2322) +++ OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs (working copy) @@ -37,6 +37,7 @@ using OpenSim.Framework; using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.Physics.Manager; +using System.Drawing; namespace OpenSim.Region.Environment.Scenes { @@ -166,6 +167,12 @@ get { return m_rootPart.OwnerID; } } + public Color Color + { + get { return m_rootPart.Color; } + set { m_rootPart.Color = value; } + } + public string Text { get { return m_rootPart.Text; } @@ -1417,6 +1424,10 @@ public override void SetText(string text, Vector3 color, double alpha) { + Color = Color.FromArgb (0xff - (int)(alpha * 0xff), + (int)(color.x * 0xff), + (int)(color.y * 0xff), + (int)(color.z * 0xff)); Text = text; } } Index: OpenSim/Region/Environment/Scenes/SceneObjectPart.cs =================================================================== --- OpenSim/Region/Environment/Scenes/SceneObjectPart.cs (revision 2322) +++ OpenSim/Region/Environment/Scenes/SceneObjectPart.cs (working copy) @@ -37,6 +37,7 @@ using OpenSim.Region.Environment.Interfaces; using OpenSim.Region.Environment.Scenes.Scripting; using OpenSim.Region.Physics.Manager; +using System.Drawing; namespace OpenSim.Region.Environment.Scenes { @@ -303,6 +304,21 @@ set { m_description = value; } } + private Color m_color = Color.Black; + + public Color Color + { + get { return m_color; } + set + { + m_color = value; + /* ScheduleFullUpdate() need not be called b/c after + * setting the color, the text will be set, so then + * ScheduleFullUpdate() will be called. */ + //ScheduleFullUpdate(); + } + } + private string m_text = ""; public string Text @@ -1000,9 +1016,10 @@ } } + byte[] color = new byte[] { m_color.R, m_color.G, m_color.B, m_color.A }; remoteClient.SendPrimitiveToClient(m_regionHandle, 64096, LocalID, m_shape, lPos, clientFlags, m_uuid, OwnerID, - m_text, ParentID, m_particleSystem, lRot); + m_text, color, ParentID, m_particleSystem, lRot); } /// Terse updates @@ -1089,6 +1106,10 @@ public void SetText(string text, Vector3 color, double alpha) { + Color = Color.FromArgb (0xff - (int)(alpha * 0xff), + (int)(color.x * 0xff), + (int)(color.y * 0xff), + (int)(color.z * 0xff)); Text = text; } Index: OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs =================================================================== --- OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs (revision 2322) +++ OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs (working copy) @@ -272,7 +272,7 @@ public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, - LLUUID objectID, LLUUID ownerID, string text, uint parentID, + LLUUID objectID, LLUUID ownerID, string text, byte[] color, uint parentID, byte[] particleSystem, LLQuaternion rotation) { }