diff options
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 8f55208..9f32c33 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -3735,8 +3735,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3735 | } | 3735 | } |
3736 | } | 3736 | } |
3737 | 3737 | ||
3738 | ++updatesThisCall; | ||
3739 | |||
3740 | #region UpdateFlags to packet type conversion | 3738 | #region UpdateFlags to packet type conversion |
3741 | 3739 | ||
3742 | PrimUpdateFlags updateFlags = (PrimUpdateFlags)update.Flags; | 3740 | PrimUpdateFlags updateFlags = (PrimUpdateFlags)update.Flags; |
@@ -3801,7 +3799,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3801 | } | 3799 | } |
3802 | else | 3800 | else |
3803 | { | 3801 | { |
3804 | updateBlock = CreatePrimUpdateBlock((SceneObjectPart)update.Entity, AgentId); | 3802 | SceneObjectPart part = (SceneObjectPart)update.Entity; |
3803 | updateBlock = CreatePrimUpdateBlock(part, AgentId); | ||
3804 | |||
3805 | // If the part has become a private hud since the update was scheduled then we do not | ||
3806 | // want to send it to other avatars. | ||
3807 | if (part.ParentGroup.IsAttachment | ||
3808 | && part.ParentGroup.HasPrivateAttachmentPoint | ||
3809 | && part.ParentGroup.AttachedAvatar != AgentId) | ||
3810 | continue; | ||
3805 | } | 3811 | } |
3806 | 3812 | ||
3807 | objectUpdateBlocks.Value.Add(updateBlock); | 3813 | objectUpdateBlocks.Value.Add(updateBlock); |
@@ -3824,6 +3830,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3824 | { | 3830 | { |
3825 | // Everything else goes here | 3831 | // Everything else goes here |
3826 | terseUpdateBlocks.Value.Add(CreateImprovedTerseBlock(update.Entity, updateFlags.HasFlag(PrimUpdateFlags.Textures))); | 3832 | terseUpdateBlocks.Value.Add(CreateImprovedTerseBlock(update.Entity, updateFlags.HasFlag(PrimUpdateFlags.Textures))); |
3833 | |||
3834 | if (update.Entity is SceneObjectPart) | ||
3835 | { | ||
3836 | SceneObjectPart part = (SceneObjectPart)update.Entity; | ||
3837 | |||
3838 | // If the part has become a private hud since the update was scheduled then we do not | ||
3839 | // want to send it to other avatars. | ||
3840 | if (part.ParentGroup.IsAttachment | ||
3841 | && part.ParentGroup.HasPrivateAttachmentPoint | ||
3842 | && part.ParentGroup.AttachedAvatar != AgentId) | ||
3843 | continue; | ||
3844 | } | ||
3845 | |||
3827 | terseUpdates.Value.Add(update); | 3846 | terseUpdates.Value.Add(update); |
3828 | } | 3847 | } |
3829 | } | 3848 | } |
@@ -3893,6 +3912,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3893 | // If any of the packets created from this call go unacknowledged, all of the updates will be resent | 3912 | // If any of the packets created from this call go unacknowledged, all of the updates will be resent |
3894 | OutPacket(packet, ThrottleOutPacketType.Task, true, delegate(OutgoingPacket oPacket) { ResendPrimUpdates(terseUpdates.Value, oPacket); }); | 3913 | OutPacket(packet, ThrottleOutPacketType.Task, true, delegate(OutgoingPacket oPacket) { ResendPrimUpdates(terseUpdates.Value, oPacket); }); |
3895 | } | 3914 | } |
3915 | |||
3916 | ++updatesThisCall; | ||
3896 | } | 3917 | } |
3897 | 3918 | ||
3898 | #endregion Packet Sending | 3919 | #endregion Packet Sending |