bug fix (??) in sog copy()

avinationmerge
UbitUmarov 2012-03-11 08:43:53 +00:00
parent 43dc0ee020
commit dab7e03584
1 changed files with 19 additions and 10 deletions

View File

@ -1940,37 +1940,46 @@ namespace OpenSim.Region.Framework.Scenes
{ {
newPart = dupe.CopyPart(part, OwnerID, GroupID, userExposed); newPart = dupe.CopyPart(part, OwnerID, GroupID, userExposed);
newPart.LinkNum = part.LinkNum; newPart.LinkNum = part.LinkNum;
} if (userExposed)
newPart.ParentID = dupe.m_rootPart.LocalId;
}
else else
{ {
newPart = dupe.m_rootPart; 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 // Need to duplicate the physics actor as well
if (part.PhysActor != null && userExposed) if (userExposed && (isphys || !isphan || newPart.VolumeDetectActive))
{ {
PrimitiveBaseShape pbs = newPart.Shape; PrimitiveBaseShape pbs = newPart.Shape;
newPart.PhysActor newPart.PhysActor
= m_scene.PhysicsScene.AddPrimShape( = m_scene.PhysicsScene.AddPrimShape(
string.Format("{0}/{1}", newPart.Name, newPart.UUID), string.Format("{0}/{1}", newPart.Name, newPart.UUID),
pbs, pbs,
newPart.AbsolutePosition, newPart.AbsolutePosition,
newPart.Scale, newPart.Scale,
//newPart.RotationOffset,
newPart.GetWorldRotation(), newPart.GetWorldRotation(),
part.PhysActor.IsPhysical, isphys,
isphan,
newPart.LocalId); 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) 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.HasGroupChanged = true;
dupe.AttachToBackup(); dupe.AttachToBackup();