From a5c693e302c941be69b7eedaead72bdd3ce7aa59 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 17 Jan 2017 00:41:30 +0000 Subject: start adding calls to effective permissions aggregation on changes; rearrange code in DuplicateObject(); --- OpenSim/Region/Framework/Scenes/SceneGraph.cs | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes/SceneGraph.cs') diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 602ac4b..dad8cac 100755 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs @@ -2101,20 +2101,23 @@ namespace OpenSim.Region.Framework.Scenes SceneObjectGroup copy = original.Copy(true); copy.AbsolutePosition = copy.AbsolutePosition + offset; + SceneObjectPart[] parts = copy.Parts; + + m_numTotalPrim += parts.Length; + if (original.OwnerID != AgentID) { copy.SetOwner(AgentID, GroupID); - SceneObjectPart[] partList = copy.Parts; - if (m_parentScene.Permissions.PropagatePermissions()) { - foreach (SceneObjectPart child in partList) + foreach (SceneObjectPart child in parts) { child.Inventory.ChangeInventoryOwner(AgentID); child.TriggerScriptChangedEvent(Changed.OWNER); child.ApplyNextOwnerPermissions(); } + copy.AggregatePerms(); } } @@ -2124,10 +2127,6 @@ namespace OpenSim.Region.Framework.Scenes lock (SceneObjectGroupsByFullID) SceneObjectGroupsByFullID[copy.UUID] = copy; - SceneObjectPart[] parts = copy.Parts; - - m_numTotalPrim += parts.Length; - foreach (SceneObjectPart part in parts) { if (part.GetPrimType() == PrimType.SCULPT) @@ -2150,21 +2149,17 @@ namespace OpenSim.Region.Framework.Scenes // think it's selected, so it will never send a deselect... copy.IsSelected = false; - m_numPrim += copy.Parts.Length; - if (rot != Quaternion.Identity) - { copy.UpdateGroupRotationR(rot); - } + + // required for physics to update it's position + copy.ResetChildPrimPhysicsPositions(); copy.CreateScriptInstances(0, false, m_parentScene.DefaultScriptEngine, 1); - copy.HasGroupChanged = true; - copy.ScheduleGroupForFullUpdate(); copy.ResumeScripts(); - // required for physics to update it's position - copy.AbsolutePosition = copy.AbsolutePosition; - + copy.HasGroupChanged = true; + copy.ScheduleGroupForFullUpdate(); return copy; } } -- cgit v1.1