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