diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index cd438d6..910fb76 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -395,6 +395,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
395 | public bool IsGroupMember(UUID groupID) { return m_groupPowers.ContainsKey(groupID); } | 395 | public bool IsGroupMember(UUID groupID) { return m_groupPowers.ContainsKey(groupID); } |
396 | 396 | ||
397 | /// <summary> | 397 | /// <summary> |
398 | /// Entity update queues | ||
399 | /// </summary> | ||
400 | public PriorityQueue EntityUpdateQueue { get { return m_entityUpdates; } } | ||
401 | |||
402 | /// <summary> | ||
398 | /// First name of the agent/avatar represented by the client | 403 | /// First name of the agent/avatar represented by the client |
399 | /// </summary> | 404 | /// </summary> |
400 | public string FirstName { get { return m_firstName; } } | 405 | public string FirstName { get { return m_firstName; } } |
@@ -3625,7 +3630,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3625 | // Remove the update packet from the list of packets waiting for acknowledgement | 3630 | // Remove the update packet from the list of packets waiting for acknowledgement |
3626 | // because we are requeuing the list of updates. They will be resent in new packets | 3631 | // because we are requeuing the list of updates. They will be resent in new packets |
3627 | // with the most recent state and priority. | 3632 | // with the most recent state and priority. |
3628 | m_udpClient.NeedAcks.Remove(oPacket.SequenceNumber, 0, true); | 3633 | m_udpClient.NeedAcks.Remove(oPacket.SequenceNumber); |
3634 | |||
3635 | // Count this as a resent packet since we are going to requeue all of the updates contained in it | ||
3636 | Interlocked.Increment(ref m_udpClient.PacketsResent); | ||
3637 | |||
3629 | foreach (EntityUpdate update in updates) | 3638 | foreach (EntityUpdate update in updates) |
3630 | ResendPrimUpdate(update); | 3639 | ResendPrimUpdate(update); |
3631 | } | 3640 | } |
@@ -4092,7 +4101,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4092 | // Remove the update packet from the list of packets waiting for acknowledgement | 4101 | // Remove the update packet from the list of packets waiting for acknowledgement |
4093 | // because we are requeuing the list of updates. They will be resent in new packets | 4102 | // because we are requeuing the list of updates. They will be resent in new packets |
4094 | // with the most recent state. | 4103 | // with the most recent state. |
4095 | m_udpClient.NeedAcks.Remove(oPacket.SequenceNumber, 0, true); | 4104 | m_udpClient.NeedAcks.Remove(oPacket.SequenceNumber); |
4105 | |||
4106 | // Count this as a resent packet since we are going to requeue all of the updates contained in it | ||
4107 | Interlocked.Increment(ref m_udpClient.PacketsResent); | ||
4108 | |||
4096 | foreach (ObjectPropertyUpdate update in updates) | 4109 | foreach (ObjectPropertyUpdate update in updates) |
4097 | ResendPropertyUpdate(update); | 4110 | ResendPropertyUpdate(update); |
4098 | } | 4111 | } |
@@ -4897,7 +4910,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4897 | data.RelativePosition.ToBytes(objectData, 0); | 4910 | data.RelativePosition.ToBytes(objectData, 0); |
4898 | data.Velocity.ToBytes(objectData, 12); | 4911 | data.Velocity.ToBytes(objectData, 12); |
4899 | data.Acceleration.ToBytes(objectData, 24); | 4912 | data.Acceleration.ToBytes(objectData, 24); |
4900 | data.RotationOffset.ToBytes(objectData, 36); | 4913 | try |
4914 | { | ||
4915 | data.RotationOffset.ToBytes(objectData, 36); | ||
4916 | } | ||
4917 | catch (Exception e) | ||
4918 | { | ||
4919 | m_log.Warn("[LLClientView]: exception converting quaternion to bytes, using Quaternion.Identity. Exception: " + e.ToString()); | ||
4920 | OpenMetaverse.Quaternion.Identity.ToBytes(objectData, 36); | ||
4921 | } | ||
4901 | data.AngularVelocity.ToBytes(objectData, 48); | 4922 | data.AngularVelocity.ToBytes(objectData, 48); |
4902 | 4923 | ||
4903 | ObjectUpdatePacket.ObjectDataBlock update = new ObjectUpdatePacket.ObjectDataBlock(); | 4924 | ObjectUpdatePacket.ObjectDataBlock update = new ObjectUpdatePacket.ObjectDataBlock(); |
@@ -11513,7 +11534,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11513 | /// <returns></returns> | 11534 | /// <returns></returns> |
11514 | public byte[] GetThrottlesPacked(float multiplier) | 11535 | public byte[] GetThrottlesPacked(float multiplier) |
11515 | { | 11536 | { |
11516 | return m_udpClient.GetThrottlesPacked(); | 11537 | return m_udpClient.GetThrottlesPacked(multiplier); |
11517 | } | 11538 | } |
11518 | 11539 | ||
11519 | /// <summary> | 11540 | /// <summary> |
@@ -11706,7 +11727,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11706 | 11727 | ||
11707 | info.userEP = m_userEndPoint; | 11728 | info.userEP = m_userEndPoint; |
11708 | info.proxyEP = null; | 11729 | info.proxyEP = null; |
11709 | info.agentcircuit = new sAgentCircuitData(RequestClientInfo()); | 11730 | info.agentcircuit = RequestClientInfo(); |
11710 | 11731 | ||
11711 | return info; | 11732 | return info; |
11712 | } | 11733 | } |