aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/ScenePresence.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs32
1 files changed, 25 insertions, 7 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index faa07d4..d471930 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1891,7 +1891,7 @@ namespace OpenSim.Region.Framework.Scenes
1891 foreach (SceneObjectGroup sog in m_attachments) 1891 foreach (SceneObjectGroup sog in m_attachments)
1892 { 1892 {
1893 SendFullUpdateToClient(ControllingClient); 1893 SendFullUpdateToClient(ControllingClient);
1894 sog.SendFullUpdateToClient(ControllingClient); 1894 SendAttachmentFullUpdateToAgentNF(sog, this);
1895 1895
1896 if (!sog.HasPrivateAttachmentPoint) 1896 if (!sog.HasPrivateAttachmentPoint)
1897 { 1897 {
@@ -1905,7 +1905,7 @@ namespace OpenSim.Region.Framework.Scenes
1905 continue; 1905 continue;
1906 1906
1907 SendFullUpdateToClient(p.ControllingClient); // resend our data by updates path 1907 SendFullUpdateToClient(p.ControllingClient); // resend our data by updates path
1908 sog.SendFullUpdateToClient(p.ControllingClient); 1908 SendAttachmentFullUpdateToAgentNF(sog, p);
1909 }; 1909 };
1910 } 1910 }
1911 sog.RootPart.ParentGroup.CreateScriptInstances(0, false, m_scene.DefaultScriptEngine, GetStateSource()); 1911 sog.RootPart.ParentGroup.CreateScriptInstances(0, false, m_scene.DefaultScriptEngine, GetStateSource());
@@ -4745,9 +4745,11 @@ namespace OpenSim.Region.Framework.Scenes
4745 { 4745 {
4746 if (p != this && sog.HasPrivateAttachmentPoint) 4746 if (p != this && sog.HasPrivateAttachmentPoint)
4747 return; 4747 return;
4748
4748 if (ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && p.GodLevel < 200) 4749 if (ParcelHideThisAvatar && currentParcelUUID != p.currentParcelUUID && p.GodLevel < 200)
4749 return; 4750 return;
4750 sog.SendFullUpdateToClient(p.ControllingClient); 4751
4752 SendAttachmentFullUpdateToAgentNF(sog, p);
4751 SendFullUpdateToClient(p.ControllingClient); // resend our data by updates path 4753 SendFullUpdateToClient(p.ControllingClient); // resend our data by updates path
4752 }); 4754 });
4753 } 4755 }
@@ -4762,15 +4764,31 @@ namespace OpenSim.Region.Framework.Scenes
4762 { 4764 {
4763 foreach (SceneObjectGroup sog in m_attachments) 4765 foreach (SceneObjectGroup sog in m_attachments)
4764 { 4766 {
4765 if (p == this || !sog.HasPrivateAttachmentPoint) 4767 SendAttachmentFullUpdateToAgentNF(sog, p);
4766 {
4767 sog.SendFullUpdateToClient(p.ControllingClient);
4768 }
4769 } 4768 }
4770 SendFullUpdateToClient(p.ControllingClient); // resend our data by updates path 4769 SendFullUpdateToClient(p.ControllingClient); // resend our data by updates path
4771 } 4770 }
4772 } 4771 }
4773 4772
4773 public void SendAttachmentFullUpdateToAgentNF(SceneObjectGroup sog, ScenePresence p)
4774 {
4775 if (p != this && sog.HasPrivateAttachmentPoint)
4776 return;
4777
4778 SceneObjectPart[] parts = sog.Parts;
4779 SceneObjectPart rootpart = sog.RootPart;
4780
4781 p.ControllingClient.SendEntityUpdate(rootpart, PrimUpdateFlags.FullUpdate);
4782
4783 for (int i = 0; i < parts.Length; i++)
4784 {
4785 SceneObjectPart part = parts[i];
4786 if (part == rootpart)
4787 continue;
4788 p.ControllingClient.SendEntityUpdate(part, PrimUpdateFlags.FullUpdate);
4789 }
4790 }
4791
4774 public void SendAttachmentScheduleUpdate(SceneObjectGroup sog) 4792 public void SendAttachmentScheduleUpdate(SceneObjectGroup sog)
4775 { 4793 {
4776 if (IsChildAgent || IsInTransit) 4794 if (IsChildAgent || IsInTransit)