aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/Common
diff options
context:
space:
mode:
authorHomer Horwitz2008-09-14 15:46:54 +0000
committerHomer Horwitz2008-09-14 15:46:54 +0000
commit4ba7ce5981b8134a19970fc9c476f6c6d31b0cc9 (patch)
tree14b4427b92eaca2806b35e19d0b6f16a42515d06 /OpenSim/Region/ScriptEngine/Common
parentMantis #2186 (diff)
downloadopensim-SC-4ba7ce5981b8134a19970fc9c476f6c6d31b0cc9.zip
opensim-SC-4ba7ce5981b8134a19970fc9c476f6c6d31b0cc9.tar.gz
opensim-SC-4ba7ce5981b8134a19970fc9c476f6c6d31b0cc9.tar.bz2
opensim-SC-4ba7ce5981b8134a19970fc9c476f6c6d31b0cc9.tar.xz
Added some further clipping to color- and alpha-values.
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Common')
-rw-r--r--OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs100
1 files changed, 51 insertions, 49 deletions
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
index 1090c42..39502b6 100644
--- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
+++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
@@ -1181,9 +1181,9 @@ namespace OpenSim.Region.ScriptEngine.Common
1181 if (face > -1) 1181 if (face > -1)
1182 { 1182 {
1183 texcolor = tex.CreateFace((uint)face).RGBA; 1183 texcolor = tex.CreateFace((uint)face).RGBA;
1184 texcolor.R = (float)color.x; 1184 texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
1185 texcolor.G = (float)color.y; 1185 texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
1186 texcolor.B = (float)color.z; 1186 texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
1187 tex.FaceTextures[face].RGBA = texcolor; 1187 tex.FaceTextures[face].RGBA = texcolor;
1188 part.UpdateTexture(tex); 1188 part.UpdateTexture(tex);
1189 return; 1189 return;
@@ -1195,15 +1195,15 @@ namespace OpenSim.Region.ScriptEngine.Common
1195 if (tex.FaceTextures[i] != null) 1195 if (tex.FaceTextures[i] != null)
1196 { 1196 {
1197 texcolor = tex.FaceTextures[i].RGBA; 1197 texcolor = tex.FaceTextures[i].RGBA;
1198 texcolor.R = (float)color.x; 1198 texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
1199 texcolor.G = (float)color.y; 1199 texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
1200 texcolor.B = (float)color.z; 1200 texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
1201 tex.FaceTextures[i].RGBA = texcolor; 1201 tex.FaceTextures[i].RGBA = texcolor;
1202 } 1202 }
1203 texcolor = tex.DefaultTexture.RGBA; 1203 texcolor = tex.DefaultTexture.RGBA;
1204 texcolor.R = (float)color.x; 1204 texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
1205 texcolor.G = (float)color.y; 1205 texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
1206 texcolor.B = (float)color.z; 1206 texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
1207 tex.DefaultTexture.RGBA = texcolor; 1207 tex.DefaultTexture.RGBA = texcolor;
1208 } 1208 }
1209 part.UpdateTexture(tex); 1209 part.UpdateTexture(tex);
@@ -1340,7 +1340,7 @@ namespace OpenSim.Region.ScriptEngine.Common
1340 if (face > -1) 1340 if (face > -1)
1341 { 1341 {
1342 texcolor = tex.CreateFace((uint)face).RGBA; 1342 texcolor = tex.CreateFace((uint)face).RGBA;
1343 texcolor.A = (float)Math.Min(Math.Max(alpha, 0.0), 1.0); 1343 texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
1344 tex.FaceTextures[face].RGBA = texcolor; 1344 tex.FaceTextures[face].RGBA = texcolor;
1345 part.UpdateTexture(tex); 1345 part.UpdateTexture(tex);
1346 return; 1346 return;
@@ -1352,12 +1352,12 @@ namespace OpenSim.Region.ScriptEngine.Common
1352 if (tex.FaceTextures[i] != null) 1352 if (tex.FaceTextures[i] != null)
1353 { 1353 {
1354 texcolor = tex.FaceTextures[i].RGBA; 1354 texcolor = tex.FaceTextures[i].RGBA;
1355 texcolor.A = (float)Math.Min(Math.Max(alpha, 0.0), 1.0); 1355 texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
1356 tex.FaceTextures[i].RGBA = texcolor; 1356 tex.FaceTextures[i].RGBA = texcolor;
1357 } 1357 }
1358 } 1358 }
1359 texcolor = tex.DefaultTexture.RGBA; 1359 texcolor = tex.DefaultTexture.RGBA;
1360 texcolor.A = (float)Math.Min(Math.Max(alpha, 0.0), 1.0); 1360 texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
1361 tex.DefaultTexture.RGBA = texcolor; 1361 tex.DefaultTexture.RGBA = texcolor;
1362 part.UpdateTexture(tex); 1362 part.UpdateTexture(tex);
1363 return; 1363 return;
@@ -1444,9 +1444,9 @@ namespace OpenSim.Region.ScriptEngine.Common
1444 if (light) 1444 if (light)
1445 { 1445 {
1446 part.Shape.LightEntry = true; 1446 part.Shape.LightEntry = true;
1447 part.Shape.LightColorR = (float)color.x; 1447 part.Shape.LightColorR = Util.Clip((float)color.x, 0.0f, 1.0f);
1448 part.Shape.LightColorG = (float)color.y; 1448 part.Shape.LightColorG = Util.Clip((float)color.y, 0.0f, 1.0f);
1449 part.Shape.LightColorB = (float)color.z; 1449 part.Shape.LightColorB = Util.Clip((float)color.z, 0.0f, 1.0f);
1450 part.Shape.LightIntensity = intensity; 1450 part.Shape.LightIntensity = intensity;
1451 part.Shape.LightRadius = radius; 1451 part.Shape.LightRadius = radius;
1452 part.Shape.LightFalloff = falloff; 1452 part.Shape.LightFalloff = falloff;
@@ -2866,9 +2866,9 @@ namespace OpenSim.Region.ScriptEngine.Common
2866 if (face > -1) 2866 if (face > -1)
2867 { 2867 {
2868 texcolor = tex.CreateFace((uint)face).RGBA; 2868 texcolor = tex.CreateFace((uint)face).RGBA;
2869 texcolor.R = (float)Math.Min(Math.Max(color.x, 0.0), 1.0); 2869 texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
2870 texcolor.G = (float)Math.Min(Math.Max(color.y, 0.0), 1.0); 2870 texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
2871 texcolor.B = (float)Math.Min(Math.Max(color.z, 0.0), 1.0); 2871 texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
2872 tex.FaceTextures[face].RGBA = texcolor; 2872 tex.FaceTextures[face].RGBA = texcolor;
2873 part.UpdateTexture(tex); 2873 part.UpdateTexture(tex);
2874 return; 2874 return;
@@ -2876,25 +2876,25 @@ namespace OpenSim.Region.ScriptEngine.Common
2876 else if (face == -1) 2876 else if (face == -1)
2877 { 2877 {
2878 texcolor = tex.DefaultTexture.RGBA; 2878 texcolor = tex.DefaultTexture.RGBA;
2879 texcolor.R = (float)Math.Min(Math.Max(color.x, 0.0), 1.0); 2879 texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
2880 texcolor.G = (float)Math.Min(Math.Max(color.y, 0.0), 1.0); 2880 texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
2881 texcolor.B = (float)Math.Min(Math.Max(color.z, 0.0), 1.0); 2881 texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
2882 tex.DefaultTexture.RGBA = texcolor; 2882 tex.DefaultTexture.RGBA = texcolor;
2883 for (uint i = 0; i < 32; i++) 2883 for (uint i = 0; i < 32; i++)
2884 { 2884 {
2885 if (tex.FaceTextures[i] != null) 2885 if (tex.FaceTextures[i] != null)
2886 { 2886 {
2887 texcolor = tex.FaceTextures[i].RGBA; 2887 texcolor = tex.FaceTextures[i].RGBA;
2888 texcolor.R = (float)Math.Min(Math.Max(color.x, 0.0), 1.0); 2888 texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
2889 texcolor.G = (float)Math.Min(Math.Max(color.y, 0.0), 1.0); 2889 texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
2890 texcolor.B = (float)Math.Min(Math.Max(color.z, 0.0), 1.0); 2890 texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
2891 tex.FaceTextures[i].RGBA = texcolor; 2891 tex.FaceTextures[i].RGBA = texcolor;
2892 } 2892 }
2893 } 2893 }
2894 texcolor = tex.DefaultTexture.RGBA; 2894 texcolor = tex.DefaultTexture.RGBA;
2895 texcolor.R = (float)Math.Min(Math.Max(color.x, 0.0), 1.0); 2895 texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
2896 texcolor.G = (float)Math.Min(Math.Max(color.y, 0.0), 1.0); 2896 texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
2897 texcolor.B = (float)Math.Min(Math.Max(color.z, 0.0), 1.0); 2897 texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
2898 tex.DefaultTexture.RGBA = texcolor; 2898 tex.DefaultTexture.RGBA = texcolor;
2899 part.UpdateTexture(tex); 2899 part.UpdateTexture(tex);
2900 return; 2900 return;
@@ -2913,34 +2913,34 @@ namespace OpenSim.Region.ScriptEngine.Common
2913 if (face > -1) 2913 if (face > -1)
2914 { 2914 {
2915 texcolor = tex.CreateFace((uint)face).RGBA; 2915 texcolor = tex.CreateFace((uint)face).RGBA;
2916 texcolor.R = (float)Math.Min(Math.Max(color.x, 0.0), 1.0); 2916 texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
2917 texcolor.G = (float)Math.Min(Math.Max(color.y, 0.0), 1.0); 2917 texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
2918 texcolor.B = (float)Math.Min(Math.Max(color.z, 0.0), 1.0); 2918 texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
2919 tex.FaceTextures[face].RGBA = texcolor; 2919 tex.FaceTextures[face].RGBA = texcolor;
2920 part.UpdateTexture(tex); 2920 part.UpdateTexture(tex);
2921 } 2921 }
2922 else if (face == -1) 2922 else if (face == -1)
2923 { 2923 {
2924 texcolor = tex.DefaultTexture.RGBA; 2924 texcolor = tex.DefaultTexture.RGBA;
2925 texcolor.R = (float)Math.Min(Math.Max(color.x, 0.0), 1.0); 2925 texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
2926 texcolor.G = (float)Math.Min(Math.Max(color.y, 0.0), 1.0); 2926 texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
2927 texcolor.B = (float)Math.Min(Math.Max(color.z, 0.0), 1.0); 2927 texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
2928 tex.DefaultTexture.RGBA = texcolor; 2928 tex.DefaultTexture.RGBA = texcolor;
2929 for (uint i = 0; i < 32; i++) 2929 for (uint i = 0; i < 32; i++)
2930 { 2930 {
2931 if (tex.FaceTextures[i] != null) 2931 if (tex.FaceTextures[i] != null)
2932 { 2932 {
2933 texcolor = tex.FaceTextures[i].RGBA; 2933 texcolor = tex.FaceTextures[i].RGBA;
2934 texcolor.R = (float)Math.Min(Math.Max(color.x, 0.0), 1.0); 2934 texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
2935 texcolor.G = (float)Math.Min(Math.Max(color.y, 0.0), 1.0); 2935 texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
2936 texcolor.B = (float)Math.Min(Math.Max(color.z, 0.0), 1.0); 2936 texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
2937 tex.FaceTextures[i].RGBA = texcolor; 2937 tex.FaceTextures[i].RGBA = texcolor;
2938 } 2938 }
2939 } 2939 }
2940 texcolor = tex.DefaultTexture.RGBA; 2940 texcolor = tex.DefaultTexture.RGBA;
2941 texcolor.R = (float)Math.Min(Math.Max(color.x, 0.0), 1.0); 2941 texcolor.R = Util.Clip((float)color.x, 0.0f, 1.0f);
2942 texcolor.G = (float)Math.Min(Math.Max(color.y, 0.0), 1.0); 2942 texcolor.G = Util.Clip((float)color.y, 0.0f, 1.0f);
2943 texcolor.B = (float)Math.Min(Math.Max(color.z, 0.0), 1.0); 2943 texcolor.B = Util.Clip((float)color.z, 0.0f, 1.0f);
2944 tex.DefaultTexture.RGBA = texcolor; 2944 tex.DefaultTexture.RGBA = texcolor;
2945 part.UpdateTexture(tex); 2945 part.UpdateTexture(tex);
2946 } 2946 }
@@ -3161,8 +3161,10 @@ namespace OpenSim.Region.ScriptEngine.Common
3161 public void llSetText(string text, LSL_Types.Vector3 color, double alpha) 3161 public void llSetText(string text, LSL_Types.Vector3 color, double alpha)
3162 { 3162 {
3163 m_host.AddScriptLPS(1); 3163 m_host.AddScriptLPS(1);
3164 Vector3 av3 = new Vector3((float)color.x, (float)color.y, (float)color.z); 3164 Vector3 av3 = new Vector3(Util.Clip((float)color.x, 0.0f, 1.0f),
3165 m_host.SetText(text, av3, alpha); 3165 Util.Clip((float)color.y, 0.0f, 1.0f),
3166 Util.Clip((float)color.z, 0.0f, 1.0f));
3167 m_host.SetText(text, av3, Util.Clip((float)alpha, 0.0f, 1.0f));
3166 } 3168 }
3167 3169
3168 public double llWater(LSL_Types.Vector3 offset) 3170 public double llWater(LSL_Types.Vector3 offset)
@@ -6154,7 +6156,7 @@ namespace OpenSim.Region.ScriptEngine.Common
6154 if (face > -1) 6156 if (face > -1)
6155 { 6157 {
6156 texcolor = tex.CreateFace((uint)face).RGBA; 6158 texcolor = tex.CreateFace((uint)face).RGBA;
6157 texcolor.A = (float)Math.Min(Math.Max(alpha, 0.0), 1.0); 6159 texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
6158 tex.FaceTextures[face].RGBA = texcolor; 6160 tex.FaceTextures[face].RGBA = texcolor;
6159 part.UpdateTexture(tex); 6161 part.UpdateTexture(tex);
6160 return; 6162 return;
@@ -6162,19 +6164,19 @@ namespace OpenSim.Region.ScriptEngine.Common
6162 else if (face == -1) 6164 else if (face == -1)
6163 { 6165 {
6164 texcolor = tex.DefaultTexture.RGBA; 6166 texcolor = tex.DefaultTexture.RGBA;
6165 texcolor.A = (float)Math.Min(Math.Max(alpha, 0.0), 1.0); 6167 texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
6166 tex.DefaultTexture.RGBA = texcolor; 6168 tex.DefaultTexture.RGBA = texcolor;
6167 for (uint i = 0; i < 32; i++) 6169 for (uint i = 0; i < 32; i++)
6168 { 6170 {
6169 if (tex.FaceTextures[i] != null) 6171 if (tex.FaceTextures[i] != null)
6170 { 6172 {
6171 texcolor = tex.FaceTextures[i].RGBA; 6173 texcolor = tex.FaceTextures[i].RGBA;
6172 texcolor.A = (float)Math.Min(Math.Max(alpha, 0.0), 1.0); 6174 texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
6173 tex.FaceTextures[i].RGBA = texcolor; 6175 tex.FaceTextures[i].RGBA = texcolor;
6174 } 6176 }
6175 } 6177 }
6176 texcolor = tex.DefaultTexture.RGBA; 6178 texcolor = tex.DefaultTexture.RGBA;
6177 texcolor.A = (float)Math.Min(Math.Max(alpha, 0.0), 1.0); 6179 texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
6178 tex.DefaultTexture.RGBA = texcolor; 6180 tex.DefaultTexture.RGBA = texcolor;
6179 part.UpdateTexture(tex); 6181 part.UpdateTexture(tex);
6180 return; 6182 return;
@@ -6193,26 +6195,26 @@ namespace OpenSim.Region.ScriptEngine.Common
6193 if (face > -1) 6195 if (face > -1)
6194 { 6196 {
6195 texcolor = tex.CreateFace((uint)face).RGBA; 6197 texcolor = tex.CreateFace((uint)face).RGBA;
6196 texcolor.A = (float)Math.Min(Math.Max(alpha, 0.0), 1.0); 6198 texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
6197 tex.FaceTextures[face].RGBA = texcolor; 6199 tex.FaceTextures[face].RGBA = texcolor;
6198 part.UpdateTexture(tex); 6200 part.UpdateTexture(tex);
6199 } 6201 }
6200 else if (face == -1) 6202 else if (face == -1)
6201 { 6203 {
6202 texcolor = tex.DefaultTexture.RGBA; 6204 texcolor = tex.DefaultTexture.RGBA;
6203 texcolor.A = (float)Math.Min(Math.Max(alpha, 0.0), 1.0); 6205 texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
6204 tex.DefaultTexture.RGBA = texcolor; 6206 tex.DefaultTexture.RGBA = texcolor;
6205 for (uint i = 0; i < 32; i++) 6207 for (uint i = 0; i < 32; i++)
6206 { 6208 {
6207 if (tex.FaceTextures[i] != null) 6209 if (tex.FaceTextures[i] != null)
6208 { 6210 {
6209 texcolor = tex.FaceTextures[i].RGBA; 6211 texcolor = tex.FaceTextures[i].RGBA;
6210 texcolor.A = (float)Math.Min(Math.Max(alpha, 0.0), 1.0); 6212 texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
6211 tex.FaceTextures[i].RGBA = texcolor; 6213 tex.FaceTextures[i].RGBA = texcolor;
6212 } 6214 }
6213 } 6215 }
6214 texcolor = tex.DefaultTexture.RGBA; 6216 texcolor = tex.DefaultTexture.RGBA;
6215 texcolor.A = (float)Math.Min(Math.Max(alpha, 0.0), 1.0); 6217 texcolor.A = Util.Clip((float)alpha, 0.0f, 1.0f);
6216 tex.DefaultTexture.RGBA = texcolor; 6218 tex.DefaultTexture.RGBA = texcolor;
6217 part.UpdateTexture(tex); 6219 part.UpdateTexture(tex);
6218 } 6220 }