aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs8
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs31
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs12
3 files changed, 31 insertions, 20 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 73d7a6c..59d1c69 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -4887,7 +4887,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
4887 float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) 4887 float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags)
4888 { 4888 {
4889// m_log.DebugFormat("[LLCLIENTVIEW]: Sending land properties for {0} to {1}", lo.LandData.GlobalID, Name); 4889// m_log.DebugFormat("[LLCLIENTVIEW]: Sending land properties for {0} to {1}", lo.LandData.GlobalID, Name);
4890 4890
4891 LandData landData = lo.LandData; 4891 LandData landData = lo.LandData;
4892 4892
4893 ParcelPropertiesMessage updateMessage = new ParcelPropertiesMessage(); 4893 ParcelPropertiesMessage updateMessage = new ParcelPropertiesMessage();
@@ -5525,10 +5525,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5525 AddLocalPacketHandler(PacketType.RezObject, HandlerRezObject); 5525 AddLocalPacketHandler(PacketType.RezObject, HandlerRezObject);
5526 AddLocalPacketHandler(PacketType.DeRezObject, HandlerDeRezObject); 5526 AddLocalPacketHandler(PacketType.DeRezObject, HandlerDeRezObject);
5527 AddLocalPacketHandler(PacketType.ModifyLand, HandlerModifyLand); 5527 AddLocalPacketHandler(PacketType.ModifyLand, HandlerModifyLand);
5528 5528 AddLocalPacketHandler(PacketType.RegionHandshakeReply, HandlerRegionHandshakeReply, false);
5529// AddLocalPacketHandler(PacketType.RegionHandshakeReply, HandlerRegionHandshakeReply, false);
5530 AddLocalPacketHandler(PacketType.RegionHandshakeReply, HandlerRegionHandshakeReply, true);
5531
5532 AddLocalPacketHandler(PacketType.AgentWearablesRequest, HandlerAgentWearablesRequest); 5529 AddLocalPacketHandler(PacketType.AgentWearablesRequest, HandlerAgentWearablesRequest);
5533 AddLocalPacketHandler(PacketType.AgentSetAppearance, HandlerAgentSetAppearance); 5530 AddLocalPacketHandler(PacketType.AgentSetAppearance, HandlerAgentSetAppearance);
5534 AddLocalPacketHandler(PacketType.AgentIsNowWearing, HandlerAgentIsNowWearing); 5531 AddLocalPacketHandler(PacketType.AgentIsNowWearing, HandlerAgentIsNowWearing);
@@ -6494,7 +6491,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
6494 Action<IClientAPI> handlerRegionHandShakeReply = OnRegionHandShakeReply; 6491 Action<IClientAPI> handlerRegionHandShakeReply = OnRegionHandShakeReply;
6495 if (handlerRegionHandShakeReply != null) 6492 if (handlerRegionHandShakeReply != null)
6496 { 6493 {
6497 Thread.Sleep(100);
6498 handlerRegionHandShakeReply(this); 6494 handlerRegionHandShakeReply(this);
6499 } 6495 }
6500 6496
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 055473d..98ea880 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -1878,22 +1878,29 @@ namespace OpenSim.Region.Framework.Scenes
1878 1878
1879 public void AddTextureAnimation(Primitive.TextureAnimation pTexAnim) 1879 public void AddTextureAnimation(Primitive.TextureAnimation pTexAnim)
1880 { 1880 {
1881 byte[] data = new byte[16]; 1881 if (((int)pTexAnim.Flags & 1) != 0) // ANIM_ON
1882 int pos = 0; 1882 {
1883 byte[] data = new byte[16];
1884 int pos = 0;
1883 1885
1884 // The flags don't like conversion from uint to byte, so we have to do 1886 // The flags don't like conversion from uint to byte, so we have to do
1885 // it the crappy way. See the above function :( 1887 // it the crappy way. See the above function :(
1886 1888
1887 data[pos] = ConvertScriptUintToByte((uint)pTexAnim.Flags); pos++; 1889 data[pos] = ConvertScriptUintToByte((uint)pTexAnim.Flags); pos++;
1888 data[pos] = (byte)pTexAnim.Face; pos++; 1890 data[pos] = (byte)pTexAnim.Face; pos++;
1889 data[pos] = (byte)pTexAnim.SizeX; pos++; 1891 data[pos] = (byte)pTexAnim.SizeX; pos++;
1890 data[pos] = (byte)pTexAnim.SizeY; pos++; 1892 data[pos] = (byte)pTexAnim.SizeY; pos++;
1891 1893
1892 Utils.FloatToBytes(pTexAnim.Start).CopyTo(data, pos); 1894 Utils.FloatToBytes(pTexAnim.Start).CopyTo(data, pos);
1893 Utils.FloatToBytes(pTexAnim.Length).CopyTo(data, pos + 4); 1895 Utils.FloatToBytes(pTexAnim.Length).CopyTo(data, pos + 4);
1894 Utils.FloatToBytes(pTexAnim.Rate).CopyTo(data, pos + 8); 1896 Utils.FloatToBytes(pTexAnim.Rate).CopyTo(data, pos + 8);
1895 1897
1896 m_TextureAnimation = data; 1898 m_TextureAnimation = data;
1899 }
1900 else
1901 {
1902 m_TextureAnimation = Utils.EmptyBytes;
1903 }
1897 } 1904 }
1898 1905
1899 public void AdjustSoundGain(double volume) 1906 public void AdjustSoundGain(double volume)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index c65f933..b569194 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -6001,17 +6001,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
6001 { 6001 {
6002 for (int i = 0; i < length; i++) 6002 for (int i = 0; i < length; i++)
6003 { 6003 {
6004 int needle = llGetListEntryType(test, 0).value;
6005 int haystack = llGetListEntryType(src, i).value;
6006
6004 // Why this piece of insanity? This is because most script constants are C# value types (e.g. int) 6007 // Why this piece of insanity? This is because most script constants are C# value types (e.g. int)
6005 // rather than wrapped LSL types. Such a script constant does not have int.Equal(LSL_Integer) code 6008 // rather than wrapped LSL types. Such a script constant does not have int.Equal(LSL_Integer) code
6006 // and so the comparison fails even if the LSL_Integer conceptually has the same value. 6009 // and so the comparison fails even if the LSL_Integer conceptually has the same value.
6007 // Therefore, here we test Equals on both the source and destination objects. 6010 // Therefore, here we test Equals on both the source and destination objects.
6008 // However, a future better approach may be use LSL struct script constants (e.g. LSL_Integer(1)). 6011 // However, a future better approach may be use LSL struct script constants (e.g. LSL_Integer(1)).
6009 if (src.Data[i].Equals(test.Data[0]) || test.Data[0].Equals(src.Data[i])) 6012 if ((needle == haystack) && (src.Data[i].Equals(test.Data[0]) || test.Data[0].Equals(src.Data[i])))
6010 { 6013 {
6011 int j; 6014 int j;
6012 for (j = 1; j < test.Length; j++) 6015 for (j = 1; j < test.Length; j++)
6013 if (!(src.Data[i+j].Equals(test.Data[j]) || test.Data[j].Equals(src.Data[i+j]))) 6016 {
6017 needle = llGetListEntryType(test, j).value;
6018 haystack = llGetListEntryType(src, i+j).value;
6019
6020 if ((needle != haystack) || (!(src.Data[i+j].Equals(test.Data[j]) || test.Data[j].Equals(src.Data[i+j]))))
6014 break; 6021 break;
6022 }
6015 6023
6016 if (j == test.Length) 6024 if (j == test.Length)
6017 { 6025 {