replace calls to SetOwnerId and SetRootPartOwner by a single new SetOwner() so owner is not changed twice on rootpart

httptests
UbitUmarov 2017-01-16 20:27:39 +00:00
parent 6735d3496c
commit 180add745c
4 changed files with 27 additions and 6 deletions

View File

@ -136,8 +136,7 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell
return false;
}
group.SetOwnerId(remoteClient.AgentId);
group.SetRootPartOwner(part, remoteClient.AgentId, remoteClient.ActiveGroupId);
group.SetOwner(remoteClient.AgentId, remoteClient.ActiveGroupId);
if (m_scene.Permissions.PropagatePermissions())
{

View File

@ -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;

View File

@ -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();
}
/// <summary>
/// Make a copy of the given part.
/// </summary>

View File

@ -163,8 +163,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Attachments
if ((effectivePerms & (uint)PermissionMask.Transfer) == 0)
return 0;
hostPart.ParentGroup.SetOwnerId(target.UUID);
hostPart.ParentGroup.SetRootPartOwner(hostPart.ParentGroup.RootPart, target.UUID, target.ControllingClient.ActiveGroupId);
hostPart.ParentGroup.SetOwner(target.UUID, target.ControllingClient.ActiveGroupId);
if (m_scene.Permissions.PropagatePermissions())
{