diff options
Diffstat (limited to 'OpenSim')
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 | { |