aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorTeravus Ovares2008-02-02 08:11:14 +0000
committerTeravus Ovares2008-02-02 08:11:14 +0000
commit2d6c21e8fc8c1d8d69911c91d10c8896b312994a (patch)
tree1731054a3d900f5a8c46ccf77eafc09dbf875fdf /OpenSim/Region
parentfixed a timing bug in config re-read. Apparently there is 1000000000 ns in on... (diff)
downloadopensim-SC-2d6c21e8fc8c1d8d69911c91d10c8896b312994a.zip
opensim-SC-2d6c21e8fc8c1d8d69911c91d10c8896b312994a.tar.gz
opensim-SC-2d6c21e8fc8c1d8d69911c91d10c8896b312994a.tar.bz2
opensim-SC-2d6c21e8fc8c1d8d69911c91d10c8896b312994a.tar.xz
* Added Full support for llSetTextureAnim. To ckrinke: Let the fountains of Wright Plaza flow!
* Fixed another bug in LibSL. This is the same version, as before just with a bug fix.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectPart.cs43
-rw-r--r--OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs11
2 files changed, 51 insertions, 3 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
index 9be75da..b7c0596 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
@@ -57,7 +57,18 @@ namespace OpenSim.Region.Environment.Scenes
57 ALLOWED_DROP = 64, 57 ALLOWED_DROP = 64,
58 OWNER = 128 58 OWNER = 128
59 } 59 }
60 60 [Flags]
61 public enum TextureAnimFlags : byte
62 {
63 NONE = 0x00,
64 ANIM_ON = 0x01,
65 LOOP = 0x02,
66 REVERSE = 0x04,
67 PING_PONG = 0x08,
68 SMOOTH = 0x10,
69 ROTATE = 0x20,
70 SCALE = 0x40
71 }
61 72
62 public partial class SceneObjectPart : IScriptHost 73 public partial class SceneObjectPart : IScriptHost
63 { 74 {
@@ -1367,9 +1378,37 @@ namespace OpenSim.Region.Environment.Scenes
1367 UpdateTextureEntry(tex.ToBytes()); 1378 UpdateTextureEntry(tex.ToBytes());
1368 } 1379 }
1369 1380
1381 public byte ConvertScriptUintToByte(uint indata)
1382 {
1383 byte outdata = (byte)TextureAnimFlags.NONE;
1384 if ((indata & 1) != 0) outdata |= (byte)TextureAnimFlags.ANIM_ON;
1385 if ((indata & 2) != 0) outdata |= (byte)TextureAnimFlags.LOOP;
1386 if ((indata & 4) != 0) outdata |= (byte)TextureAnimFlags.REVERSE;
1387 if ((indata & 8) != 0) outdata |= (byte)TextureAnimFlags.PING_PONG;
1388 if ((indata & 16) != 0) outdata |= (byte)TextureAnimFlags.SMOOTH;
1389 if ((indata & 32) != 0) outdata |= (byte)TextureAnimFlags.ROTATE;
1390 if ((indata & 64) != 0) outdata |= (byte)TextureAnimFlags.SCALE;
1391 return outdata;
1392 }
1393
1370 public void AddTextureAnimation(Primitive.TextureAnimation pTexAnim) 1394 public void AddTextureAnimation(Primitive.TextureAnimation pTexAnim)
1371 { 1395 {
1372 m_TextureAnimation = pTexAnim.GetBytes(); 1396 byte[] data = new byte[16];
1397 int pos = 0;
1398
1399 // The flags don't like conversion from uint to byte, so we have to do
1400 // it the crappy way. See the above function :(
1401
1402 data[pos] = ConvertScriptUintToByte(pTexAnim.Flags); pos++;
1403 data[pos] = (byte)pTexAnim.Face; pos++;
1404 data[pos] = (byte)pTexAnim.SizeX; pos++;
1405 data[pos] = (byte)pTexAnim.SizeX; pos++;
1406
1407 Helpers.FloatToBytes(0).CopyTo(data, pos);
1408 Helpers.FloatToBytes(0).CopyTo(data, pos + 4);
1409 Helpers.FloatToBytes(0.5f).CopyTo(data, pos + 8);
1410
1411 m_TextureAnimation = data;
1373 } 1412 }
1374 1413
1375 #endregion 1414 #endregion
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
index 3f719fb..4054369 100644
--- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
+++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs
@@ -42,6 +42,7 @@ using OpenSim.Region.ScriptEngine.Common.ScriptEngineBase;
42 42
43namespace OpenSim.Region.ScriptEngine.Common 43namespace OpenSim.Region.ScriptEngine.Common
44{ 44{
45
45 /// <summary> 46 /// <summary>
46 /// Contains all LSL ll-functions. This class will be in Default AppDomain. 47 /// Contains all LSL ll-functions. This class will be in Default AppDomain.
47 /// </summary> 48 /// </summary>
@@ -2005,16 +2006,24 @@ namespace OpenSim.Region.ScriptEngine.Common
2005 return String.Empty; 2006 return String.Empty;
2006 } 2007 }
2007 2008
2009
2010
2008 public void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate) 2011 public void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate)
2009 { 2012 {
2010 Primitive.TextureAnimation pTexAnim = new Primitive.TextureAnimation(); 2013 Primitive.TextureAnimation pTexAnim = new Primitive.TextureAnimation();
2011 pTexAnim.Flags = (uint)mode; 2014 pTexAnim.Flags =(uint) mode;
2015
2016 //ALL_SIDES
2017 if (face == -1)
2018 face = 255;
2019
2012 pTexAnim.Face = (uint)face; 2020 pTexAnim.Face = (uint)face;
2013 pTexAnim.Length = (float)length; 2021 pTexAnim.Length = (float)length;
2014 pTexAnim.Rate = (float)rate; 2022 pTexAnim.Rate = (float)rate;
2015 pTexAnim.SizeX = (uint)sizex; 2023 pTexAnim.SizeX = (uint)sizex;
2016 pTexAnim.SizeY = (uint)sizey; 2024 pTexAnim.SizeY = (uint)sizey;
2017 pTexAnim.Start = (float)start; 2025 pTexAnim.Start = (float)start;
2026
2018 m_host.AddTextureAnimation(pTexAnim); 2027 m_host.AddTextureAnimation(pTexAnim);
2019 m_host.SendFullUpdateToAllClients(); 2028 m_host.SendFullUpdateToAllClients();
2020 } 2029 }