Thank you very much, CharlieO for:
Added: llSetLinkAlpha() and finished off llSetLinkColor() by adding the ability to use LINK_SET.afrisby
parent
45567b71b8
commit
94ec2a508a
|
@ -1172,9 +1172,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
|
||||||
|
|
||||||
public void llSetLinkColor(int linknumber, LSL_Types.Vector3 color, int face)
|
public void llSetLinkColor(int linknumber, LSL_Types.Vector3 color, int face)
|
||||||
{
|
{
|
||||||
// still needs to be adjusted for compatability with link constants
|
|
||||||
SceneObjectPart part = m_host.ParentGroup.GetLinkNumPart(linknumber);
|
SceneObjectPart part = m_host.ParentGroup.GetLinkNumPart(linknumber);
|
||||||
if (part != null)
|
if (linknumber > -1)
|
||||||
{
|
{
|
||||||
LLObject.TextureEntry tex = new LLObject.TextureEntry(part.Shape.TextureEntry, 0, part.Shape.TextureEntry.Length);
|
LLObject.TextureEntry tex = new LLObject.TextureEntry(part.Shape.TextureEntry, 0, part.Shape.TextureEntry.Length);
|
||||||
LLColor texcolor;
|
LLColor texcolor;
|
||||||
|
@ -1211,9 +1210,50 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (linknumber == -1)
|
||||||
|
{
|
||||||
|
int num = m_host.ParentGroup.PrimCount;
|
||||||
|
for (int w = 0; w < num; w++)
|
||||||
|
{
|
||||||
|
linknumber = w;
|
||||||
|
part = m_host.ParentGroup.GetLinkNumPart(linknumber);
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new Exception("Link does not contain enough prims for the given linknumber setting");
|
NotImplemented("llSetLinkColor");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2350,7 +2390,77 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler
|
||||||
|
|
||||||
public void llSetLinkAlpha(int linknumber, double alpha, int face)
|
public void llSetLinkAlpha(int linknumber, double alpha, int face)
|
||||||
{
|
{
|
||||||
NotImplemented("llSetLinkAlpha");
|
SceneObjectPart part = m_host.ParentGroup.GetLinkNumPart(linknumber);
|
||||||
|
if (linknumber > -1)
|
||||||
|
{
|
||||||
|
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.A = (float)Math.Abs(alpha - 1);
|
||||||
|
tex.FaceTextures[face].RGBA = texcolor;
|
||||||
|
part.UpdateTexture(tex);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (face == -1)
|
||||||
|
{
|
||||||
|
texcolor = tex.DefaultTexture.RGBA;
|
||||||
|
texcolor.A = (float)Math.Abs(alpha - 1);
|
||||||
|
tex.DefaultTexture.RGBA = texcolor;
|
||||||
|
for (uint i = 0; i < 32; i++)
|
||||||
|
{
|
||||||
|
if (tex.FaceTextures[i] != null)
|
||||||
|
{
|
||||||
|
texcolor = tex.FaceTextures[i].RGBA;
|
||||||
|
texcolor.A = (float)Math.Abs(alpha - 1);
|
||||||
|
tex.FaceTextures[i].RGBA = texcolor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part.UpdateTexture(tex);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (linknumber == -1)
|
||||||
|
{
|
||||||
|
int num = m_host.ParentGroup.PrimCount;
|
||||||
|
for (int w = 0; w < num; w++)
|
||||||
|
{
|
||||||
|
linknumber = w;
|
||||||
|
part = m_host.ParentGroup.GetLinkNumPart(linknumber);
|
||||||
|
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.A = (float)Math.Abs(alpha - 1);
|
||||||
|
tex.FaceTextures[face].RGBA = texcolor;
|
||||||
|
part.UpdateTexture(tex);
|
||||||
|
}
|
||||||
|
else if (face == -1)
|
||||||
|
{
|
||||||
|
texcolor = tex.DefaultTexture.RGBA;
|
||||||
|
texcolor.A = (float)Math.Abs(alpha - 1);
|
||||||
|
tex.DefaultTexture.RGBA = texcolor;
|
||||||
|
for (uint i = 0; i < 32; i++)
|
||||||
|
{
|
||||||
|
if (tex.FaceTextures[i] != null)
|
||||||
|
{
|
||||||
|
texcolor = tex.FaceTextures[i].RGBA;
|
||||||
|
texcolor.A = (float)Math.Abs(alpha - 1);
|
||||||
|
tex.FaceTextures[i].RGBA = texcolor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part.UpdateTexture(tex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NotImplemented("llSetLinkAlpha");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int llGetNumberOfPrims()
|
public int llGetNumberOfPrims()
|
||||||
|
|
Loading…
Reference in New Issue