mirror of
https://github.com/opensim/opensim.git
synced 2026-08-12 12:25:42 +08:00
object Take and TakeCopy are for in scene SOPs and SPs and permitions module is NOT a shared module
This commit is contained in:
@@ -2126,6 +2126,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
List<SceneObjectGroup> deleteGroups = new List<SceneObjectGroup>();
|
||||
List<SceneObjectGroup> takeGroups = new List<SceneObjectGroup>();
|
||||
|
||||
ScenePresence sp = remoteClient.SceneAgent as ScenePresence;
|
||||
|
||||
// Start with true for both, then remove the flags if objects
|
||||
// that we can't derez are part of the selection
|
||||
bool permissionToTake = true;
|
||||
@@ -2180,14 +2182,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
if (action == DeRezAction.TakeCopy)
|
||||
{
|
||||
if (!Permissions.CanTakeCopyObject(grp.UUID, remoteClient.AgentId))
|
||||
if (!Permissions.CanTakeCopyObject(grp, sp))
|
||||
permissionToTakeCopy = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
permissionToTakeCopy = false;
|
||||
}
|
||||
if (!Permissions.CanTakeObject(grp.UUID, remoteClient.AgentId))
|
||||
if (!Permissions.CanTakeObject(grp, sp))
|
||||
permissionToTake = false;
|
||||
|
||||
if (!Permissions.CanDeleteObject(grp.UUID, remoteClient.AgentId))
|
||||
|
||||
@@ -44,9 +44,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
public delegate bool RezObjectHandler(int objectCount, UUID owner, Vector3 objectPosition, Scene scene);
|
||||
public delegate bool DeleteObjectHandler(UUID objectID, UUID deleter, Scene scene);
|
||||
public delegate bool TransferObjectHandler(UUID objectID, UUID recipient, Scene scene);
|
||||
public delegate bool TakeObjectHandler(UUID objectID, UUID stealer, Scene scene);
|
||||
public delegate bool TakeObjectHandler(SceneObjectGroup sog, ScenePresence sp);
|
||||
public delegate bool SellGroupObjectHandler(UUID userID, UUID groupID, Scene scene);
|
||||
public delegate bool TakeCopyObjectHandler(UUID objectID, UUID userID, Scene inScene);
|
||||
public delegate bool TakeCopyObjectHandler(SceneObjectGroup sog, ScenePresence sp);
|
||||
public delegate bool DuplicateObjectHandler(int objectCount, UUID objectID, UUID owner, Scene scene, Vector3 objectPosition);
|
||||
public delegate bool EditObjectHandler(UUID objectID, UUID editorID, Scene scene);
|
||||
public delegate bool EditObjectInventoryHandler(UUID objectID, UUID editorID, Scene scene);
|
||||
@@ -300,7 +300,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
#endregion
|
||||
|
||||
#region TAKE OBJECT
|
||||
public bool CanTakeObject(UUID objectID, UUID AvatarTakingUUID)
|
||||
public bool CanTakeObject(SceneObjectGroup sog, ScenePresence sp)
|
||||
{
|
||||
bool result = true;
|
||||
|
||||
@@ -310,7 +310,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
Delegate[] list = handler.GetInvocationList();
|
||||
foreach (TakeObjectHandler h in list)
|
||||
{
|
||||
if (h(objectID, AvatarTakingUUID, m_scene) == false)
|
||||
if (h(sog, sp) == false)
|
||||
{
|
||||
result = false;
|
||||
break;
|
||||
@@ -357,7 +357,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
|
||||
#region TAKE COPY OBJECT
|
||||
public bool CanTakeCopyObject(UUID objectID, UUID userID)
|
||||
public bool CanTakeCopyObject(SceneObjectGroup sog, ScenePresence sp)
|
||||
{
|
||||
bool result = true;
|
||||
|
||||
@@ -367,7 +367,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
Delegate[] list = handler.GetInvocationList();
|
||||
foreach (TakeCopyObjectHandler h in list)
|
||||
{
|
||||
if (h(objectID, userID, m_scene) == false)
|
||||
if (h(sog, sp) == false)
|
||||
{
|
||||
result = false;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user