diff options
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 5 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 36 |
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 | ||