diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/UDP')
-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 8e0b72f..4860da0 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 | ||
@@ -4971,7 +4972,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4971 | // in that direction, even though we don't model this on the server. Implementing this in the future | 4972 | // in that direction, even though we don't model this on the server. Implementing this in the future |
4972 | // may improve movement smoothness. | 4973 | // may improve movement smoothness. |
4973 | // acceleration = new Vector3(1, 0, 0); | 4974 | // acceleration = new Vector3(1, 0, 0); |
4974 | 4975 | ||
4975 | angularVelocity = Vector3.Zero; | 4976 | angularVelocity = Vector3.Zero; |
4976 | 4977 | ||
4977 | if (sendTexture) | 4978 | if (sendTexture) |
@@ -5121,7 +5122,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5121 | update.PCode = (byte)PCode.Avatar; | 5122 | update.PCode = (byte)PCode.Avatar; |
5122 | update.ProfileCurve = 1; | 5123 | update.ProfileCurve = 1; |
5123 | update.PSBlock = Utils.EmptyBytes; | 5124 | update.PSBlock = Utils.EmptyBytes; |
5124 | update.Scale = new Vector3(0.45f, 0.6f, 1.9f); | 5125 | update.Scale = data.Appearance.AvatarSize; |
5126 | // update.Scale.Z -= 0.2f; | ||
5127 | |||
5125 | update.Text = Utils.EmptyBytes; | 5128 | update.Text = Utils.EmptyBytes; |
5126 | update.TextColor = new byte[4]; | 5129 | update.TextColor = new byte[4]; |
5127 | 5130 | ||
@@ -5309,8 +5312,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5309 | // If AgentUpdate is ever handled asynchronously, then we will also need to construct a new AgentUpdateArgs | 5312 | // If AgentUpdate is ever handled asynchronously, then we will also need to construct a new AgentUpdateArgs |
5310 | // for each AgentUpdate packet. | 5313 | // for each AgentUpdate packet. |
5311 | AddLocalPacketHandler(PacketType.AgentUpdate, HandleAgentUpdate, false); | 5314 | AddLocalPacketHandler(PacketType.AgentUpdate, HandleAgentUpdate, false); |
5312 | 5315 | ||
5313 | AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect, false); | 5316 | AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect, false); |
5317 | AddLocalPacketHandler(PacketType.VelocityInterpolateOff, HandleVelocityInterpolateOff, false); | ||
5318 | AddLocalPacketHandler(PacketType.VelocityInterpolateOn, HandleVelocityInterpolateOn, false); | ||
5314 | AddLocalPacketHandler(PacketType.AgentCachedTexture, HandleAgentTextureCached, false); | 5319 | AddLocalPacketHandler(PacketType.AgentCachedTexture, HandleAgentTextureCached, false); |
5315 | AddLocalPacketHandler(PacketType.MultipleObjectUpdate, HandleMultipleObjUpdate, false); | 5320 | AddLocalPacketHandler(PacketType.MultipleObjectUpdate, HandleMultipleObjUpdate, false); |
5316 | AddLocalPacketHandler(PacketType.MoneyTransferRequest, HandleMoneyTransferRequest, false); | 5321 | AddLocalPacketHandler(PacketType.MoneyTransferRequest, HandleMoneyTransferRequest, false); |
@@ -5828,6 +5833,29 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5828 | return true; | 5833 | return true; |
5829 | } | 5834 | } |
5830 | 5835 | ||
5836 | private bool HandleVelocityInterpolateOff(IClientAPI sender, Packet Pack) | ||
5837 | { | ||
5838 | VelocityInterpolateOffPacket p = (VelocityInterpolateOffPacket)Pack; | ||
5839 | if (p.AgentData.SessionID != SessionId || | ||
5840 | p.AgentData.AgentID != AgentId) | ||
5841 | return true; | ||
5842 | |||
5843 | m_VelocityInterpolate = false; | ||
5844 | return true; | ||
5845 | } | ||
5846 | |||
5847 | private bool HandleVelocityInterpolateOn(IClientAPI sender, Packet Pack) | ||
5848 | { | ||
5849 | VelocityInterpolateOnPacket p = (VelocityInterpolateOnPacket)Pack; | ||
5850 | if (p.AgentData.SessionID != SessionId || | ||
5851 | p.AgentData.AgentID != AgentId) | ||
5852 | return true; | ||
5853 | |||
5854 | m_VelocityInterpolate = true; | ||
5855 | return true; | ||
5856 | } | ||
5857 | |||
5858 | |||
5831 | private bool HandleAvatarPropertiesRequest(IClientAPI sender, Packet Pack) | 5859 | private bool HandleAvatarPropertiesRequest(IClientAPI sender, Packet Pack) |
5832 | { | 5860 | { |
5833 | AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack; | 5861 | AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack; |
@@ -6248,6 +6276,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6248 | // Temporarily protect ourselves from the mantis #951 failure. | 6276 | // Temporarily protect ourselves from the mantis #951 failure. |
6249 | // However, we could do this for several other handlers where a failure isn't terminal | 6277 | // However, we could do this for several other handlers where a failure isn't terminal |
6250 | // for the client session anyway, in order to protect ourselves against bad code in plugins | 6278 | // for the client session anyway, in order to protect ourselves against bad code in plugins |
6279 | Vector3 avSize = appear.AgentData.Size; | ||
6251 | try | 6280 | try |
6252 | { | 6281 | { |
6253 | byte[] visualparams = new byte[appear.VisualParam.Length]; | 6282 | byte[] visualparams = new byte[appear.VisualParam.Length]; |
@@ -6258,7 +6287,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6258 | if (appear.ObjectData.TextureEntry.Length > 1) | 6287 | if (appear.ObjectData.TextureEntry.Length > 1) |
6259 | te = new Primitive.TextureEntry(appear.ObjectData.TextureEntry, 0, appear.ObjectData.TextureEntry.Length); | 6288 | te = new Primitive.TextureEntry(appear.ObjectData.TextureEntry, 0, appear.ObjectData.TextureEntry.Length); |
6260 | 6289 | ||
6261 | handlerSetAppearance(sender, te, visualparams); | 6290 | handlerSetAppearance(sender, te, visualparams,avSize); |
6262 | } | 6291 | } |
6263 | catch (Exception e) | 6292 | catch (Exception e) |
6264 | { | 6293 | { |
@@ -11667,14 +11696,30 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11667 | cachedresp.WearableData = | 11696 | cachedresp.WearableData = |
11668 | new AgentCachedTextureResponsePacket.WearableDataBlock[cachedtex.WearableData.Length]; | 11697 | new AgentCachedTextureResponsePacket.WearableDataBlock[cachedtex.WearableData.Length]; |
11669 | 11698 | ||
11670 | for (int i = 0; i < cachedtex.WearableData.Length; i++) | 11699 | IImprovedAssetCache cache = m_scene.RequestModuleInterface<IImprovedAssetCache>(); |
11700 | if (cache == null) | ||
11671 | { | 11701 | { |
11672 | cachedresp.WearableData[i] = new AgentCachedTextureResponsePacket.WearableDataBlock(); | 11702 | for (int i = 0; i < cachedtex.WearableData.Length; i++) |
11673 | cachedresp.WearableData[i].TextureIndex = cachedtex.WearableData[i].TextureIndex; | 11703 | { |
11674 | cachedresp.WearableData[i].TextureID = UUID.Zero; | 11704 | cachedresp.WearableData[i] = new AgentCachedTextureResponsePacket.WearableDataBlock(); |
11675 | cachedresp.WearableData[i].HostName = new byte[0]; | 11705 | cachedresp.WearableData[i].TextureIndex = cachedtex.WearableData[i].TextureIndex; |
11706 | cachedresp.WearableData[i].TextureID = UUID.Zero; | ||
11707 | cachedresp.WearableData[i].HostName = new byte[0]; | ||
11708 | } | ||
11709 | } | ||
11710 | else | ||
11711 | { | ||
11712 | for (int i = 0; i < cachedtex.WearableData.Length; i++) | ||
11713 | { | ||
11714 | cachedresp.WearableData[i] = new AgentCachedTextureResponsePacket.WearableDataBlock(); | ||
11715 | cachedresp.WearableData[i].TextureIndex = cachedtex.WearableData[i].TextureIndex; | ||
11716 | if(cache.Check(cachedtex.WearableData[i].ID.ToString())) | ||
11717 | cachedresp.WearableData[i].TextureID = UUID.Zero; | ||
11718 | else | ||
11719 | cachedresp.WearableData[i].TextureID = UUID.Zero; | ||
11720 | cachedresp.WearableData[i].HostName = new byte[0]; | ||
11721 | } | ||
11676 | } | 11722 | } |
11677 | |||
11678 | cachedresp.Header.Zerocoded = true; | 11723 | cachedresp.Header.Zerocoded = true; |
11679 | OutPacket(cachedresp, ThrottleOutPacketType.Task); | 11724 | OutPacket(cachedresp, ThrottleOutPacketType.Task); |
11680 | 11725 | ||