Thanks to CharlieO for:

llSetLinkColor() and a temp place holder for llOwnerSay() since many example scripts that are copy/pasted from outside sources have llOwnerSay() and its obnoxious to change in scripts each time.
afrisby
Charles Krinke 2007-12-19 02:30:28 +00:00
parent fd3195ea53
commit 16174dac6e
1 changed files with 47 additions and 2 deletions

View File

@ -1172,7 +1172,49 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
public void llSetLinkColor(int linknumber, LSL_Types.Vector3 color, int face)
{
NotImplemented("llSetLinkColor");
// still needs to be adjusted for compatability with link constants
SceneObjectPart part = m_host.ParentGroup.GetLinkNumPart(linknumber);
if (part != null)
{
LLObject.TextureEntry tex = new LLObject.TextureEntry(part.Shape.TextureEntry, 0, part.Shape.TextureEntry.Length);
LLColor texcolor;
if (face > -1)
{
texcolor = tex.CreateFace((uint)face).RGBA;
texcolor.R = (float)Math.Abs(color.x - 1);
texcolor.G = (float)Math.Abs(color.y - 1);
texcolor.B = (float)Math.Abs(color.z - 1);
tex.FaceTextures[face].RGBA = texcolor;
part.UpdateTexture(tex);
return;
}
else if (face == -1)
{
texcolor = tex.DefaultTexture.RGBA;
texcolor.R = (float)Math.Abs(color.x - 1);
texcolor.G = (float)Math.Abs(color.y - 1);
texcolor.B = (float)Math.Abs(color.z - 1);
tex.DefaultTexture.RGBA = texcolor;
for (uint i = 0; i < 32; i++)
{
if (tex.FaceTextures[i] != null)
{
texcolor = tex.FaceTextures[i].RGBA;
texcolor.R = (float)Math.Abs(color.x - 1);
texcolor.G = (float)Math.Abs(color.y - 1);
texcolor.B = (float)Math.Abs(color.z - 1);
tex.FaceTextures[i].RGBA = texcolor;
}
}
part.UpdateTexture(tex);
return;
}
return;
}
else
{
throw new Exception("Link does not contain enough prims for the given linknumber setting");
}
}
public void llCreateLink(string target, int parent)
@ -2407,7 +2449,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
public void llOwnerSay(string msg)
{
NotImplemented("llOwnerSay");
//temp fix so that lsl wiki examples aren't annoying to use to test other functions
World.SimChat(Helpers.StringToField(msg),ChatTypeEnum.Say, 0, m_host.AbsolutePosition, m_host.Name, m_host.UUID);
IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
wComm.DeliverMessage(m_host.UUID.ToString(), ChatTypeEnum.Say, 0, m_host.Name, msg);
}
public void llRequestSimulatorData(string simulator, int data)