diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.Permissions.cs | 6 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneGraph.cs | 2 |
3 files changed, 7 insertions, 5 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Permissions.cs b/OpenSim/Region/Environment/Scenes/Scene.Permissions.cs index 3a5a3d1..5f3b100 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Permissions.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Permissions.cs | |||
@@ -403,7 +403,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
403 | #endregion | 403 | #endregion |
404 | 404 | ||
405 | #region OBJECT ENTRY | 405 | #region OBJECT ENTRY |
406 | public delegate bool CanObjectEntryHandler(UUID objectID, Vector3 newPoint, Scene scene); | 406 | public delegate bool CanObjectEntryHandler(UUID objectID, bool enteringRegion, Vector3 newPoint, Scene scene); |
407 | private List<CanObjectEntryHandler> CanObjectEntryCheckFunctions = new List<CanObjectEntryHandler>(); | 407 | private List<CanObjectEntryHandler> CanObjectEntryCheckFunctions = new List<CanObjectEntryHandler>(); |
408 | 408 | ||
409 | public void AddObjectEntryHandler(CanObjectEntryHandler delegateFunc) | 409 | public void AddObjectEntryHandler(CanObjectEntryHandler delegateFunc) |
@@ -418,11 +418,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
418 | CanObjectEntryCheckFunctions.Remove(delegateFunc); | 418 | CanObjectEntryCheckFunctions.Remove(delegateFunc); |
419 | } | 419 | } |
420 | 420 | ||
421 | public bool CanObjectEntry(UUID objectID, Vector3 newPoint) | 421 | public bool CanObjectEntry(UUID objectID, bool enteringRegion, Vector3 newPoint) |
422 | { | 422 | { |
423 | foreach (CanObjectEntryHandler check in CanObjectEntryCheckFunctions) | 423 | foreach (CanObjectEntryHandler check in CanObjectEntryCheckFunctions) |
424 | { | 424 | { |
425 | if (check(objectID, newPoint, m_scene) == false) | 425 | if (check(objectID, enteringRegion, newPoint, m_scene) == false) |
426 | { | 426 | { |
427 | return false; | 427 | return false; |
428 | } | 428 | } |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 723f874..2fcca43 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -2157,12 +2157,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
2157 | if (XMLMethod == 0) | 2157 | if (XMLMethod == 0) |
2158 | { | 2158 | { |
2159 | SceneObjectGroup sceneObject = m_serialiser.DeserializeGroupFromXml2(objXMLData); | 2159 | SceneObjectGroup sceneObject = m_serialiser.DeserializeGroupFromXml2(objXMLData); |
2160 | |||
2160 | AddRestoredSceneObject(sceneObject, true, false); | 2161 | AddRestoredSceneObject(sceneObject, true, false); |
2161 | 2162 | ||
2162 | SceneObjectPart RootPrim = GetSceneObjectPart(primID); | 2163 | SceneObjectPart RootPrim = GetSceneObjectPart(primID); |
2163 | if (RootPrim != null) | 2164 | if (RootPrim != null) |
2164 | { | 2165 | { |
2165 | if (m_regInfo.EstateSettings.IsBanned(RootPrim.OwnerID)) | 2166 | if (m_regInfo.EstateSettings.IsBanned(RootPrim.OwnerID) || |
2167 | Permissions.CanObjectEntry(RootPrim.UUID, true, RootPrim.AbsolutePosition)) | ||
2166 | { | 2168 | { |
2167 | SceneObjectGroup grp = RootPrim.ParentGroup; | 2169 | SceneObjectGroup grp = RootPrim.ParentGroup; |
2168 | if (grp != null) | 2170 | if (grp != null) |
diff --git a/OpenSim/Region/Environment/Scenes/SceneGraph.cs b/OpenSim/Region/Environment/Scenes/SceneGraph.cs index 4c15da2..f1ef6c3 100644 --- a/OpenSim/Region/Environment/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Environment/Scenes/SceneGraph.cs | |||
@@ -1185,7 +1185,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1185 | } | 1185 | } |
1186 | else | 1186 | else |
1187 | { | 1187 | { |
1188 | if (m_parentScene.Permissions.CanMoveObject(group.UUID, remoteClient.AgentId) || group.IsAttachment) | 1188 | if ((m_parentScene.Permissions.CanMoveObject(group.UUID, remoteClient.AgentId) && m_parentScene.Permissions.CanObjectEntry(group.UUID, false, pos)) || group.IsAttachment) |
1189 | { | 1189 | { |
1190 | group.UpdateGroupPosition(pos); | 1190 | group.UpdateGroupPosition(pos); |
1191 | } | 1191 | } |