diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 32 |
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) |