aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs38
1 files changed, 34 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 28758a9..d3dd5d7 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2636,6 +2636,16 @@ namespace OpenSim.Region.Framework.Scenes
2636 m_rootPart.UpdateFlag = UpdateRequired.TERSE; 2636 m_rootPart.UpdateFlag = UpdateRequired.TERSE;
2637 } 2637 }
2638 2638
2639 if (IsAttachment)
2640 {
2641 ScenePresence sp = m_scene.GetScenePresence(AttachedAvatar);
2642 if (sp != null)
2643 {
2644 sp.SendAttachmentScheduleUpdate(this);
2645 return;
2646 }
2647 }
2648
2639 SceneObjectPart[] parts = m_parts.GetArray(); 2649 SceneObjectPart[] parts = m_parts.GetArray();
2640 for (int i = 0; i < parts.Length; i++) 2650 for (int i = 0; i < parts.Length; i++)
2641 { 2651 {
@@ -2697,15 +2707,25 @@ namespace OpenSim.Region.Framework.Scenes
2697 return; 2707 return;
2698 2708
2699// m_log.DebugFormat("[SOG]: Sending immediate full group update for {0} {1}", Name, UUID); 2709// m_log.DebugFormat("[SOG]: Sending immediate full group update for {0} {1}", Name, UUID);
2700 2710
2701 RootPart.SendFullUpdateToAllClients(); 2711 if (IsAttachment)
2712 {
2713 ScenePresence sp = m_scene.GetScenePresence(AttachedAvatar);
2714 if (sp != null)
2715 {
2716 sp.SendAttachmentUpdate(this,UpdateRequired.FULL);
2717 return;
2718 }
2719 }
2720
2721 RootPart.SendFullUpdateToAllClientsInternal();
2702 2722
2703 SceneObjectPart[] parts = m_parts.GetArray(); 2723 SceneObjectPart[] parts = m_parts.GetArray();
2704 for (int i = 0; i < parts.Length; i++) 2724 for (int i = 0; i < parts.Length; i++)
2705 { 2725 {
2706 SceneObjectPart part = parts[i]; 2726 SceneObjectPart part = parts[i];
2707 if (part != RootPart) 2727 if (part != RootPart)
2708 part.SendFullUpdateToAllClients(); 2728 part.SendFullUpdateToAllClientsInternal();
2709 } 2729 }
2710 } 2730 }
2711 2731
@@ -2739,9 +2759,19 @@ namespace OpenSim.Region.Framework.Scenes
2739 if (IsDeleted) 2759 if (IsDeleted)
2740 return; 2760 return;
2741 2761
2762 if (IsAttachment)
2763 {
2764 ScenePresence sp = m_scene.GetScenePresence(AttachedAvatar);
2765 if (sp != null)
2766 {
2767 sp.SendAttachmentUpdate(this, UpdateRequired.TERSE);
2768 return;
2769 }
2770 }
2771
2742 SceneObjectPart[] parts = m_parts.GetArray(); 2772 SceneObjectPart[] parts = m_parts.GetArray();
2743 for (int i = 0; i < parts.Length; i++) 2773 for (int i = 0; i < parts.Length; i++)
2744 parts[i].SendTerseUpdateToAllClients(); 2774 parts[i].SendTerseUpdateToAllClientsInternal();
2745 } 2775 }
2746 2776
2747 /// <summary> 2777 /// <summary>