From e62b3dba8a1b8c816d6b09dc1f14b915f1560afe Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 14 Dec 2010 00:11:41 +0000 Subject: reinstate IAttachmentsModule.UpdateAttachmentPosition() since this is being used by a 3rd party region module and contains non-obvious attachment specific code There are no functional changes. UpdateAttachmentPosition() is adapted to the new approach of only saving attachment state on logout --- .../CoreModules/Avatar/Attachments/AttachmentsModule.cs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'OpenSim/Region/CoreModules/Avatar/Attachments') diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index 1f49a01..360a014 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs @@ -484,6 +484,22 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments } } + public void UpdateAttachmentPosition(SceneObjectGroup sog, Vector3 pos) + { + // First we save the + // attachment point information, then we update the relative + // positioning. Then we have to mark the object as NOT an + // attachment. This is necessary in order to correctly save + // and retrieve GroupPosition information for the attachment. + // Finally, we restore the object's attachment status. + byte attachmentPoint = sog.GetAttachmentPoint(); + sog.UpdateGroupPosition(pos); + sog.RootPart.IsAttachment = false; + sog.AbsolutePosition = sog.RootPart.AttachedPos; + sog.SetAttachmentPoint(attachmentPoint); + sog.HasGroupChanged = true; + } + /// /// Update the attachment asset for the new sog details if they have changed. /// -- cgit v1.1