making use of implicit operators and Util.Clip handling of Vector3
parent
b863a15a82
commit
ede3b9ab07
|
@ -2857,6 +2857,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// <param name="face"></param>
|
/// <param name="face"></param>
|
||||||
public void SetFaceColor(Vector3 color, int face)
|
public void SetFaceColor(Vector3 color, int face)
|
||||||
{
|
{
|
||||||
|
Vector3 clippedColor = Util.Clip(color, 0.0f, 1.0f);
|
||||||
|
|
||||||
// The only way to get a deep copy/ If we don't do this, we can
|
// The only way to get a deep copy/ If we don't do this, we can
|
||||||
// never detect color changes further down.
|
// never detect color changes further down.
|
||||||
Byte[] buf = Shape.Textures.GetBytes();
|
Byte[] buf = Shape.Textures.GetBytes();
|
||||||
|
@ -2865,9 +2867,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (face >= 0 && face < GetNumberOfSides())
|
if (face >= 0 && face < GetNumberOfSides())
|
||||||
{
|
{
|
||||||
texcolor = tex.CreateFace((uint)face).RGBA;
|
texcolor = tex.CreateFace((uint)face).RGBA;
|
||||||
texcolor.R = Util.Clip((float)color.X, 0.0f, 1.0f);
|
texcolor.R = clippedColor.X;
|
||||||
texcolor.G = Util.Clip((float)color.Y, 0.0f, 1.0f);
|
texcolor.G = clippedColor.Y;
|
||||||
texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f);
|
texcolor.B = clippedColor.Z;
|
||||||
tex.FaceTextures[face].RGBA = texcolor;
|
tex.FaceTextures[face].RGBA = texcolor;
|
||||||
UpdateTextureEntry(tex.GetBytes());
|
UpdateTextureEntry(tex.GetBytes());
|
||||||
return;
|
return;
|
||||||
|
@ -2879,15 +2881,15 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (tex.FaceTextures[i] != null)
|
if (tex.FaceTextures[i] != null)
|
||||||
{
|
{
|
||||||
texcolor = tex.FaceTextures[i].RGBA;
|
texcolor = tex.FaceTextures[i].RGBA;
|
||||||
texcolor.R = Util.Clip((float)color.X, 0.0f, 1.0f);
|
texcolor.R = clippedColor.X;
|
||||||
texcolor.G = Util.Clip((float)color.Y, 0.0f, 1.0f);
|
texcolor.G = clippedColor.Y;
|
||||||
texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f);
|
texcolor.B = clippedColor.Z;
|
||||||
tex.FaceTextures[i].RGBA = texcolor;
|
tex.FaceTextures[i].RGBA = texcolor;
|
||||||
}
|
}
|
||||||
texcolor = tex.DefaultTexture.RGBA;
|
texcolor = tex.DefaultTexture.RGBA;
|
||||||
texcolor.R = Util.Clip((float)color.X, 0.0f, 1.0f);
|
texcolor.R = clippedColor.X;
|
||||||
texcolor.G = Util.Clip((float)color.Y, 0.0f, 1.0f);
|
texcolor.G = clippedColor.Y;
|
||||||
texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f);
|
texcolor.B = clippedColor.Z;
|
||||||
tex.DefaultTexture.RGBA = texcolor;
|
tex.DefaultTexture.RGBA = texcolor;
|
||||||
}
|
}
|
||||||
UpdateTextureEntry(tex.GetBytes());
|
UpdateTextureEntry(tex.GetBytes());
|
||||||
|
@ -2903,6 +2905,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// <param name="alpha"></param>
|
/// <param name="alpha"></param>
|
||||||
public void SetFaceColorAlpha(int face, Vector3 color, double alpha)
|
public void SetFaceColorAlpha(int face, Vector3 color, double alpha)
|
||||||
{
|
{
|
||||||
|
Vector3 clippedColor = Util.Clip(color, 0.0f, 1.0f);
|
||||||
|
float clippedAlpha = Util.Clip((float)alpha, 0.0f, 1.0f);
|
||||||
|
|
||||||
// The only way to get a deep copy/ If we don't do this, we can
|
// The only way to get a deep copy/ If we don't do this, we can
|
||||||
// never detect color changes further down.
|
// never detect color changes further down.
|
||||||
Byte[] buf = Shape.Textures.GetBytes();
|
Byte[] buf = Shape.Textures.GetBytes();
|
||||||
|
@ -2911,10 +2916,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (face >= 0 && face < GetNumberOfSides())
|
if (face >= 0 && face < GetNumberOfSides())
|
||||||
{
|
{
|
||||||
texcolor = tex.CreateFace((uint)face).RGBA;
|
texcolor = tex.CreateFace((uint)face).RGBA;
|
||||||
texcolor.R = Util.Clip((float)color.X, 0.0f, 1.0f);
|
texcolor.R = clippedColor.X;
|
||||||
texcolor.G = Util.Clip((float)color.Y, 0.0f, 1.0f);
|
texcolor.G = clippedColor.Y;
|
||||||
texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f);
|
texcolor.B = clippedColor.Z;
|
||||||
texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
|
texcolor.A = clippedAlpha;
|
||||||
tex.FaceTextures[face].RGBA = texcolor;
|
tex.FaceTextures[face].RGBA = texcolor;
|
||||||
UpdateTextureEntry(tex.GetBytes());
|
UpdateTextureEntry(tex.GetBytes());
|
||||||
return;
|
return;
|
||||||
|
@ -2926,17 +2931,17 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (tex.FaceTextures[i] != null)
|
if (tex.FaceTextures[i] != null)
|
||||||
{
|
{
|
||||||
texcolor = tex.FaceTextures[i].RGBA;
|
texcolor = tex.FaceTextures[i].RGBA;
|
||||||
texcolor.R = Util.Clip((float)color.X, 0.0f, 1.0f);
|
texcolor.R = clippedColor.X;
|
||||||
texcolor.G = Util.Clip((float)color.Y, 0.0f, 1.0f);
|
texcolor.G = clippedColor.Y;
|
||||||
texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f);
|
texcolor.B = clippedColor.Z;
|
||||||
texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
|
texcolor.A = clippedAlpha;
|
||||||
tex.FaceTextures[i].RGBA = texcolor;
|
tex.FaceTextures[i].RGBA = texcolor;
|
||||||
}
|
}
|
||||||
texcolor = tex.DefaultTexture.RGBA;
|
texcolor = tex.DefaultTexture.RGBA;
|
||||||
texcolor.R = Util.Clip((float)color.X, 0.0f, 1.0f);
|
texcolor.R = clippedColor.X;
|
||||||
texcolor.G = Util.Clip((float)color.Y, 0.0f, 1.0f);
|
texcolor.G = clippedColor.Y;
|
||||||
texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f);
|
texcolor.B = clippedColor.Z;
|
||||||
texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
|
texcolor.A = clippedAlpha;
|
||||||
tex.DefaultTexture.RGBA = texcolor;
|
tex.DefaultTexture.RGBA = texcolor;
|
||||||
}
|
}
|
||||||
UpdateTextureEntry(tex.GetBytes());
|
UpdateTextureEntry(tex.GetBytes());
|
||||||
|
|
|
@ -7484,7 +7484,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
LSL_Vector color=rules.GetVector3Item(idx++);
|
LSL_Vector color=rules.GetVector3Item(idx++);
|
||||||
double alpha=(double)rules.GetLSLFloatItem(idx++);
|
double alpha=(double)rules.GetLSLFloatItem(idx++);
|
||||||
|
|
||||||
part.SetFaceColorAlpha(face, new Vector3((float)color.x, (float)color.y, (float)color.z), alpha);
|
part.SetFaceColorAlpha(face, color, alpha);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue