From 180add745cea4a7e076afd1cfe1c922df1bf7e0b Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Mon, 16 Jan 2017 20:27:39 +0000 Subject: replace calls to SetOwnerId and SetRootPartOwner by a single new SetOwner() so owner is not changed twice on rootpart --- OpenSim/Region/Framework/Scenes/SceneGraph.cs | 3 +-- .../Region/Framework/Scenes/SceneObjectGroup.cs | 24 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/Framework') diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 2f65ce2..602ac4b 100755 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -2103,8 +2103,7 @@ namespace OpenSim.Region.Framework.Scenes if (original.OwnerID != AgentID) { - copy.SetOwnerId(AgentID); - copy.SetRootPartOwner(copy.RootPart, AgentID, GroupID); + copy.SetOwner(AgentID, GroupID); SceneObjectPart[] partList = copy.Parts; diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 4d1e564..924b61f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -2766,6 +2766,30 @@ namespace OpenSim.Region.Framework.Scenes part.ScheduleFullUpdate(); } + public void SetOwner(UUID cAgentID, UUID cGroupID) + { + SceneObjectPart rpart = RootPart; + UUID oldowner = rpart.OwnerID; + ForEachPart(delegate(SceneObjectPart part) + { + if(part.GroupID != part.OwnerID) + part.LastOwnerID = part.OwnerID; + part.OwnerID = cAgentID; + part.GroupID = cGroupID; + }); + + if (oldowner != cAgentID) + { + // Apply Next Owner Permissions if we're not bypassing permissions + if (!m_scene.Permissions.BypassPermissions()) + ApplyNextOwnerPermissions(); + } + + rpart.ScheduleFullUpdate(); + } + + + /// /// Make a copy of the given part. /// -- cgit v1.1