Merge branch 'avination'

avinationmerge
Melanie 2012-05-02 00:32:28 +02:00
commit e6e12c2d42
4 changed files with 12 additions and 1 deletions

View File

@ -371,14 +371,19 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
: objectGroup.AbsolutePosition.Y, : objectGroup.AbsolutePosition.Y,
objectGroup.AbsolutePosition.Z); objectGroup.AbsolutePosition.Z);
Quaternion inventoryStoredRotation = objectGroup.GroupRotation;
originalPositions[objectGroup.UUID] = objectGroup.AbsolutePosition; originalPositions[objectGroup.UUID] = objectGroup.AbsolutePosition;
// Restore attachment data after trip through the sim // Restore attachment data after trip through the sim
if (objectGroup.RootPart.AttachPoint > 0) if (objectGroup.RootPart.AttachPoint > 0)
{
inventoryStoredPosition = objectGroup.RootPart.AttachOffset; inventoryStoredPosition = objectGroup.RootPart.AttachOffset;
inventoryStoredRotation = objectGroup.RootPart.AttachRotation;
}
objectGroup.RootPart.Shape.State = objectGroup.RootPart.AttachPoint; objectGroup.RootPart.Shape.State = objectGroup.RootPart.AttachPoint;
objectGroup.AbsolutePosition = inventoryStoredPosition; objectGroup.AbsolutePosition = inventoryStoredPosition;
objectGroup.RootPart.RotationOffset = inventoryStoredRotation;
// Make sure all bits but the ones we want are clear // Make sure all bits but the ones we want are clear
// on take. // on take.
@ -768,6 +773,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
{ {
g.RootPart.AttachPoint = g.RootPart.Shape.State; g.RootPart.AttachPoint = g.RootPart.Shape.State;
g.RootPart.AttachOffset = g.AbsolutePosition; g.RootPart.AttachOffset = g.AbsolutePosition;
g.RootPart.AttachRotation = g.GroupRotation;
g.RootPart.Shape.State = 0; g.RootPart.Shape.State = 0;
} }
@ -801,6 +807,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
SceneObjectGroup g = SceneObjectSerializer.FromOriginalXmlFormat(n.OuterXml); SceneObjectGroup g = SceneObjectSerializer.FromOriginalXmlFormat(n.OuterXml);
g.RootPart.AttachPoint = g.RootPart.Shape.State; g.RootPart.AttachPoint = g.RootPart.Shape.State;
g.RootPart.AttachOffset = g.AbsolutePosition; g.RootPart.AttachOffset = g.AbsolutePosition;
g.RootPart.AttachRotation = g.GroupRotation;
g.RootPart.Shape.State = 0; g.RootPart.Shape.State = 0;
objlist.Add(g); objlist.Add(g);

View File

@ -3722,7 +3722,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
if ((change & ObjectChangeType.Position) != 0) if ((change & ObjectChangeType.Position) != 0)
{ {
group.AbsolutePosition = data.position; UpdateGroupPosition(data.position);
updateType = updatetype.groupterse; updateType = updatetype.groupterse;
} }
else else

View File

@ -196,6 +196,9 @@ namespace OpenSim.Region.Framework.Scenes
[XmlIgnore] [XmlIgnore]
public Vector3 AttachOffset = Vector3.Zero; public Vector3 AttachOffset = Vector3.Zero;
[XmlIgnore]
public Quaternion AttachRotation = Quaternion.Identity;
[XmlIgnore] [XmlIgnore]
public int STATUS_ROTATE_X; public int STATUS_ROTATE_X;

View File

@ -801,6 +801,7 @@ namespace OpenSim.Region.Framework.Scenes
group.RootPart.AttachPoint = group.RootPart.Shape.State; group.RootPart.AttachPoint = group.RootPart.Shape.State;
group.RootPart.AttachOffset = group.AbsolutePosition; group.RootPart.AttachOffset = group.AbsolutePosition;
group.RootPart.AttachRotation = group.GroupRotation;
group.ResetIDs(); group.ResetIDs();