aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs5
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs36
2 files changed, 40 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index ba97c47..28758a9 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -701,6 +701,11 @@ namespace OpenSim.Region.Framework.Scenes
701 part.GroupPosition = val; 701 part.GroupPosition = val;
702 } 702 }
703 703
704 foreach (ScenePresence av in m_linkedAvatars)
705 {
706 av.sitSOGmoved();
707 }
708
704 // now that position is changed tell it to scripts 709 // now that position is changed tell it to scripts
705 if (triggerScriptEvent) 710 if (triggerScriptEvent)
706 { 711 {
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index ae14af2..494c9e0 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -163,6 +163,7 @@ namespace OpenSim.Region.Framework.Scenes
163 } 163 }
164 m_currentParcelUUID = value; 164 m_currentParcelUUID = value;
165 m_currentParcelHide = false; 165 m_currentParcelHide = false;
166
166 ILandObject land = m_scene.LandChannel.GetLandObject(AbsolutePosition.X, AbsolutePosition.Y); 167 ILandObject land = m_scene.LandChannel.GetLandObject(AbsolutePosition.X, AbsolutePosition.Y);
167 if (land != null && !land.LandData.SeeAVs) 168 if (land != null && !land.LandData.SeeAVs)
168 m_currentParcelHide = true; 169 m_currentParcelHide = true;
@@ -172,6 +173,23 @@ namespace OpenSim.Region.Framework.Scenes
172 } 173 }
173 } 174 }
174 175
176 public void sitSOGmoved()
177 {
178 if (IsDeleted || !IsSatOnObject)
179 //what me? nahh
180 return;
181 if (IsInTransit)
182 return;
183
184 ILandObject land = m_scene.LandChannel.GetLandObject(AbsolutePosition.X, AbsolutePosition.Y);
185 if (land == null)
186 return; //??
187 UUID parcelID = land.LandData.GlobalID;
188 if (m_currentParcelUUID != parcelID)
189 currentParcelUUID = parcelID;
190 }
191
192
175 public bool ParcelAllowThisAvatarSounds 193 public bool ParcelAllowThisAvatarSounds
176 { 194 {
177 get 195 get
@@ -2707,7 +2725,7 @@ namespace OpenSim.Region.Framework.Scenes
2707 2725
2708 if (satOnObject) 2726 if (satOnObject)
2709 { 2727 {
2710 SendAvatarDataToAllAgents(); 2728// SendAvatarDataToAllAgents();
2711 m_requestedSitTargetID = 0; 2729 m_requestedSitTargetID = 0;
2712 2730
2713 part.RemoveSittingAvatar(UUID); 2731 part.RemoveSittingAvatar(UUID);
@@ -2719,6 +2737,22 @@ namespace OpenSim.Region.Framework.Scenes
2719 AddToPhysicalScene(false); 2737 AddToPhysicalScene(false);
2720 2738
2721 Animator.TrySetMovementAnimation("STAND"); 2739 Animator.TrySetMovementAnimation("STAND");
2740
2741 if (satOnObject)
2742 {
2743 ILandObject land = m_scene.LandChannel.GetLandObject(AbsolutePosition.X,AbsolutePosition.Y);
2744 if (land != null)
2745 {
2746 UUID parcelID = land.LandData.GlobalID;
2747 if (m_currentParcelUUID != parcelID)
2748 currentParcelUUID = parcelID;
2749 else
2750 SendAvatarDataToAllAgents();
2751 }
2752 else
2753 SendAvatarDataToAllAgents();
2754 }
2755
2722 TriggerScenePresenceUpdated(); 2756 TriggerScenePresenceUpdated();
2723 } 2757 }
2724 2758