diff options
author | UbitUmarov | 2014-08-01 19:52:55 +0100 |
---|---|---|
committer | UbitUmarov | 2014-08-01 19:52:55 +0100 |
commit | e296f25445ef5d0fc8d114aed6241da664c57b34 (patch) | |
tree | ea62a21e5c46da5b718c57a6d32e39e2a7e1b99e /OpenSim/Region | |
parent | handle change of hide avatars flag. Parcel limits edition still need work (diff) | |
download | opensim-SC_OLD-e296f25445ef5d0fc8d114aed6241da664c57b34.zip opensim-SC_OLD-e296f25445ef5d0fc8d114aed6241da664c57b34.tar.gz opensim-SC_OLD-e296f25445ef5d0fc8d114aed6241da664c57b34.tar.bz2 opensim-SC_OLD-e296f25445ef5d0fc8d114aed6241da664c57b34.tar.xz |
sitting avatars hidding by their position. This is not as SL that uses
avatar sitting on root prim. All cases have good and bad situations, this is
simpler. Only SOG position changes triggers checks, rotation alone will
not. ( as happens in other cases ) (UNTESTED, as usual )
Diffstat (limited to 'OpenSim/Region')
-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 | ||