From dab7e0358499702754fbc1aaa932767c77153453 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 11 Mar 2012 08:43:53 +0000 Subject: bug fix (??) in sog copy() --- .../Region/Framework/Scenes/SceneObjectGroup.cs | 29 ++++++++++++++-------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index bb554e1..2654563 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -1940,37 +1940,46 @@ namespace OpenSim.Region.Framework.Scenes { newPart = dupe.CopyPart(part, OwnerID, GroupID, userExposed); newPart.LinkNum = part.LinkNum; - } + if (userExposed) + newPart.ParentID = dupe.m_rootPart.LocalId; + } else { newPart = dupe.m_rootPart; } +/* + bool isphys = ((newPart.Flags & PrimFlags.Physics) != 0); + bool isphan = ((newPart.Flags & PrimFlags.Phantom) != 0); // Need to duplicate the physics actor as well - if (part.PhysActor != null && userExposed) + if (userExposed && (isphys || !isphan || newPart.VolumeDetectActive)) { PrimitiveBaseShape pbs = newPart.Shape; - newPart.PhysActor = m_scene.PhysicsScene.AddPrimShape( string.Format("{0}/{1}", newPart.Name, newPart.UUID), pbs, newPart.AbsolutePosition, newPart.Scale, - //newPart.RotationOffset, newPart.GetWorldRotation(), - part.PhysActor.IsPhysical, + isphys, + isphan, newPart.LocalId); - newPart.DoPhysicsPropertyUpdate(part.PhysActor.IsPhysical, true); - } + newPart.DoPhysicsPropertyUpdate(isphys, true); + */ + if (userExposed) + newPart.ApplyPhysics((uint)newPart.Flags,newPart.VolumeDetectActive,true); +// } } - if (dupe.m_rootPart.PhysActor != null && userExposed) - dupe.m_rootPart.PhysActor.Building = false; // tell physics to finish building if (userExposed) { - dupe.UpdateParentIDs(); +// done above dupe.UpdateParentIDs(); + + if (dupe.m_rootPart.PhysActor != null) + dupe.m_rootPart.PhysActor.Building = false; // tell physics to finish building + dupe.HasGroupChanged = true; dupe.AttachToBackup(); -- cgit v1.1