aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs27
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