aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs65
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