diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 65 |
1 files changed, 55 insertions, 10 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 7cf6cf1..363ee54 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -331,6 +331,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
331 | private Prioritizer m_prioritizer; | 331 | private Prioritizer m_prioritizer; |
332 | private bool m_disableFacelights = false; | 332 | private bool m_disableFacelights = false; |
333 | 333 | ||
334 | private bool m_VelocityInterpolate = false; | ||
334 | private const uint MaxTransferBytesPerPacket = 600; | 335 | private const uint MaxTransferBytesPerPacket = 600; |
335 | 336 | ||
336 | 337 | ||
@@ -4987,7 +4988,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4987 | // in that direction, even though we don't model this on the server. Implementing this in the future | 4988 | // in that direction, even though we don't model this on the server. Implementing this in the future |
4988 | // may improve movement smoothness. | 4989 | // may improve movement smoothness. |
4989 | // acceleration = new Vector3(1, 0, 0); | 4990 | // acceleration = new Vector3(1, 0, 0); |
4990 | 4991 | ||
4991 | angularVelocity = Vector3.Zero; | 4992 | angularVelocity = Vector3.Zero; |
4992 | 4993 | ||
4993 | if (sendTexture) | 4994 | if (sendTexture) |
@@ -5137,7 +5138,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5137 | update.PCode = (byte)PCode.Avatar; | 5138 | update.PCode = (byte)PCode.Avatar; |
5138 | update.ProfileCurve = 1; | 5139 | update.ProfileCurve = 1; |
5139 | update.PSBlock = Utils.EmptyBytes; | 5140 | update.PSBlock = Utils.EmptyBytes; |
5140 | update.Scale = new Vector3(0.45f, 0.6f, 1.9f); | 5141 | update.Scale = data.Appearance.AvatarSize; |
5142 | // update.Scale.Z -= 0.2f; | ||
5143 | |||
5141 | update.Text = Utils.EmptyBytes; | 5144 | update.Text = Utils.EmptyBytes; |
5142 | update.TextColor = new byte[4]; | 5145 | update.TextColor = new byte[4]; |
5143 | 5146 | ||
@@ -5325,8 +5328,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5325 | // If AgentUpdate is ever handled asynchronously, then we will also need to construct a new AgentUpdateArgs | 5328 | // If AgentUpdate is ever handled asynchronously, then we will also need to construct a new AgentUpdateArgs |
5326 | // for each AgentUpdate packet. | 5329 | // for each AgentUpdate packet. |
5327 | AddLocalPacketHandler(PacketType.AgentUpdate, HandleAgentUpdate, false); | 5330 | AddLocalPacketHandler(PacketType.AgentUpdate, HandleAgentUpdate, false); |
5328 | 5331 | ||
5329 | AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect, false); | 5332 | AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect, false); |
5333 | AddLocalPacketHandler(PacketType.VelocityInterpolateOff, HandleVelocityInterpolateOff, false); | ||
5334 | AddLocalPacketHandler(PacketType.VelocityInterpolateOn, HandleVelocityInterpolateOn, false); | ||
5330 | AddLocalPacketHandler(PacketType.AgentCachedTexture, HandleAgentTextureCached, false); | 5335 | AddLocalPacketHandler(PacketType.AgentCachedTexture, HandleAgentTextureCached, false); |
5331 | AddLocalPacketHandler(PacketType.MultipleObjectUpdate, HandleMultipleObjUpdate, false); | 5336 | AddLocalPacketHandler(PacketType.MultipleObjectUpdate, HandleMultipleObjUpdate, false); |
5332 | AddLocalPacketHandler(PacketType.MoneyTransferRequest, HandleMoneyTransferRequest, false); | 5337 | AddLocalPacketHandler(PacketType.MoneyTransferRequest, HandleMoneyTransferRequest, false); |
@@ -5844,6 +5849,29 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5844 | return true; | 5849 | return true; |
5845 | } | 5850 | } |
5846 | 5851 | ||
5852 | private bool HandleVelocityInterpolateOff(IClientAPI sender, Packet Pack) | ||
5853 | { | ||
5854 | VelocityInterpolateOffPacket p = (VelocityInterpolateOffPacket)Pack; | ||
5855 | if (p.AgentData.SessionID != SessionId || | ||
5856 | p.AgentData.AgentID != AgentId) | ||
5857 | return true; | ||
5858 | |||
5859 | m_VelocityInterpolate = false; | ||
5860 | return true; | ||
5861 | } | ||
5862 | |||
5863 | private bool HandleVelocityInterpolateOn(IClientAPI sender, Packet Pack) | ||
5864 | { | ||
5865 | VelocityInterpolateOnPacket p = (VelocityInterpolateOnPacket)Pack; | ||
5866 | if (p.AgentData.SessionID != SessionId || | ||
5867 | p.AgentData.AgentID != AgentId) | ||
5868 | return true; | ||
5869 | |||
5870 | m_VelocityInterpolate = true; | ||
5871 | return true; | ||
5872 | } | ||
5873 | |||
5874 | |||
5847 | private bool HandleAvatarPropertiesRequest(IClientAPI sender, Packet Pack) | 5875 | private bool HandleAvatarPropertiesRequest(IClientAPI sender, Packet Pack) |
5848 | { | 5876 | { |
5849 | AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack; | 5877 | AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack; |
@@ -6264,6 +6292,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6264 | // Temporarily protect ourselves from the mantis #951 failure. | 6292 | // Temporarily protect ourselves from the mantis #951 failure. |
6265 | // However, we could do this for several other handlers where a failure isn't terminal | 6293 | // However, we could do this for several other handlers where a failure isn't terminal |
6266 | // for the client session anyway, in order to protect ourselves against bad code in plugins | 6294 | // for the client session anyway, in order to protect ourselves against bad code in plugins |
6295 | Vector3 avSize = appear.AgentData.Size; | ||
6267 | try | 6296 | try |
6268 | { | 6297 | { |
6269 | byte[] visualparams = new byte[appear.VisualParam.Length]; | 6298 | byte[] visualparams = new byte[appear.VisualParam.Length]; |
@@ -6274,7 +6303,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6274 | if (appear.ObjectData.TextureEntry.Length > 1) | 6303 | if (appear.ObjectData.TextureEntry.Length > 1) |
6275 | te = new Primitive.TextureEntry(appear.ObjectData.TextureEntry, 0, appear.ObjectData.TextureEntry.Length); | 6304 | te = new Primitive.TextureEntry(appear.ObjectData.TextureEntry, 0, appear.ObjectData.TextureEntry.Length); |
6276 | 6305 | ||
6277 | handlerSetAppearance(sender, te, visualparams); | 6306 | handlerSetAppearance(sender, te, visualparams,avSize); |
6278 | } | 6307 | } |
6279 | catch (Exception e) | 6308 | catch (Exception e) |
6280 | { | 6309 | { |
@@ -11684,14 +11713,30 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11684 | cachedresp.WearableData = | 11713 | cachedresp.WearableData = |
11685 | new AgentCachedTextureResponsePacket.WearableDataBlock[cachedtex.WearableData.Length]; | 11714 | new AgentCachedTextureResponsePacket.WearableDataBlock[cachedtex.WearableData.Length]; |
11686 | 11715 | ||
11687 | for (int i = 0; i < cachedtex.WearableData.Length; i++) | 11716 | IImprovedAssetCache cache = m_scene.RequestModuleInterface<IImprovedAssetCache>(); |
11717 | if (cache == null) | ||
11688 | { | 11718 | { |
11689 | cachedresp.WearableData[i] = new AgentCachedTextureResponsePacket.WearableDataBlock(); | 11719 | for (int i = 0; i < cachedtex.WearableData.Length; i++) |
11690 | cachedresp.WearableData[i].TextureIndex = cachedtex.WearableData[i].TextureIndex; | 11720 | { |
11691 | cachedresp.WearableData[i].TextureID = UUID.Zero; | 11721 | cachedresp.WearableData[i] = new AgentCachedTextureResponsePacket.WearableDataBlock(); |
11692 | cachedresp.WearableData[i].HostName = new byte[0]; | 11722 | cachedresp.WearableData[i].TextureIndex = cachedtex.WearableData[i].TextureIndex; |
11723 | cachedresp.WearableData[i].TextureID = UUID.Zero; | ||
11724 | cachedresp.WearableData[i].HostName = new byte[0]; | ||
11725 | } | ||
11726 | } | ||
11727 | else | ||
11728 | { | ||
11729 | for (int i = 0; i < cachedtex.WearableData.Length; i++) | ||
11730 | { | ||
11731 | cachedresp.WearableData[i] = new AgentCachedTextureResponsePacket.WearableDataBlock(); | ||
11732 | cachedresp.WearableData[i].TextureIndex = cachedtex.WearableData[i].TextureIndex; | ||
11733 | if(cache.Check(cachedtex.WearableData[i].ID.ToString())) | ||
11734 | cachedresp.WearableData[i].TextureID = UUID.Zero; | ||
11735 | else | ||
11736 | cachedresp.WearableData[i].TextureID = UUID.Zero; | ||
11737 | cachedresp.WearableData[i].HostName = new byte[0]; | ||
11738 | } | ||
11693 | } | 11739 | } |
11694 | |||
11695 | cachedresp.Header.Zerocoded = true; | 11740 | cachedresp.Header.Zerocoded = true; |
11696 | OutPacket(cachedresp, ThrottleOutPacketType.Task); | 11741 | OutPacket(cachedresp, ThrottleOutPacketType.Task); |
11697 | 11742 | ||