diff options
Diffstat (limited to 'OpenSim/Region/Environment')
4 files changed, 39 insertions, 5 deletions
diff --git a/OpenSim/Region/Environment/PermissionManager.cs b/OpenSim/Region/Environment/PermissionManager.cs index 2698d3f..1daf5c3 100644 --- a/OpenSim/Region/Environment/PermissionManager.cs +++ b/OpenSim/Region/Environment/PermissionManager.cs | |||
@@ -91,16 +91,23 @@ namespace OpenSim.Region.Environment | |||
91 | 91 | ||
92 | #region Object Permissions | 92 | #region Object Permissions |
93 | 93 | ||
94 | protected virtual bool GenericObjectPermission(LLUUID user, LLUUID obj) | 94 | protected virtual bool GenericObjectPermission(LLUUID user, LLUUID objId) |
95 | { | 95 | { |
96 | // Default: deny | 96 | // Default: deny |
97 | bool permission = false; | 97 | bool permission = false; |
98 | 98 | ||
99 | if( !m_scene.Entities.ContainsKey( objId )) | ||
100 | { | ||
101 | return false; | ||
102 | } | ||
103 | |||
99 | // If it's not an object, we cant edit it. | 104 | // If it's not an object, we cant edit it. |
100 | if (!(m_scene.Entities[obj] is SceneObjectGroup)) | 105 | if (!(m_scene.Entities[objId] is SceneObjectGroup)) |
106 | { | ||
101 | return false; | 107 | return false; |
102 | 108 | } | |
103 | SceneObjectGroup task = (SceneObjectGroup)m_scene.Entities[obj]; | 109 | |
110 | SceneObjectGroup task = (SceneObjectGroup)m_scene.Entities[objId]; | ||
104 | LLUUID taskOwner = null; | 111 | LLUUID taskOwner = null; |
105 | 112 | ||
106 | // Object owners should be able to edit their own content | 113 | // Object owners should be able to edit their own content |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index afa4ea5..10bdd54 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | |||
@@ -752,7 +752,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
752 | } | 752 | } |
753 | } | 753 | } |
754 | 754 | ||
755 | public void ProcessObjectGrab(uint localID, LLVector3 offsetPos, IClientAPI remoteClient) | 755 | public virtual void ProcessObjectGrab(uint localID, LLVector3 offsetPos, IClientAPI remoteClient) |
756 | { | 756 | { |
757 | this.EventManager.TriggerObjectGrab(localID, offsetPos, remoteClient); | 757 | this.EventManager.TriggerObjectGrab(localID, offsetPos, remoteClient); |
758 | } | 758 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 3bd83aa..77d936d 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -863,5 +863,28 @@ namespace OpenSim.Region.Environment.Scenes | |||
863 | m_rootPart.Text = text; | 863 | m_rootPart.Text = text; |
864 | m_rootPart.ScheduleTerseUpdate(); | 864 | m_rootPart.ScheduleTerseUpdate(); |
865 | } | 865 | } |
866 | |||
867 | public void ObjectGrabHandler(uint localId, LLVector3 offsetPos, IClientAPI remoteClient) | ||
868 | { | ||
869 | if( m_rootPart.LocalID == localId ) | ||
870 | { | ||
871 | OnGrabGroup(offsetPos, remoteClient); | ||
872 | } | ||
873 | else | ||
874 | { | ||
875 | SceneObjectPart part = GetChildPrim(localId); | ||
876 | OnGrabPart(part, offsetPos, remoteClient); | ||
877 | } | ||
878 | } | ||
879 | |||
880 | public virtual void OnGrabPart(SceneObjectPart part, LLVector3 offsetPos, IClientAPI remoteClient) | ||
881 | { | ||
882 | part.OnGrab(offsetPos, remoteClient); | ||
883 | } | ||
884 | |||
885 | public virtual void OnGrabGroup(LLVector3 offsetPos, IClientAPI remoteClient) | ||
886 | { | ||
887 | |||
888 | } | ||
866 | } | 889 | } |
867 | } | 890 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index c4752a5..8e570d4 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | |||
@@ -566,6 +566,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
566 | public virtual void UpdateMovement() | 566 | public virtual void UpdateMovement() |
567 | { | 567 | { |
568 | } | 568 | } |
569 | |||
570 | public virtual void OnGrab(LLVector3 offsetPos, IClientAPI remoteClient) | ||
571 | { | ||
572 | } | ||
569 | } | 573 | } |
570 | } | 574 | } |
571 | 575 | ||