aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment')
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectPart.cs43
1 files changed, 41 insertions, 2 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