diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 7d82060..f5ebe97 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -1666,6 +1666,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1666 | #endregion | 1666 | #endregion |
1667 | 1667 | ||
1668 | #region Object Transfers | 1668 | #region Object Transfers |
1669 | |||
1669 | /// <summary> | 1670 | /// <summary> |
1670 | /// Move the given scene object into a new region depending on which region its absolute position has moved | 1671 | /// Move the given scene object into a new region depending on which region its absolute position has moved |
1671 | /// into. | 1672 | /// into. |
@@ -1967,35 +1968,43 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1967 | return successYN; | 1968 | return successYN; |
1968 | } | 1969 | } |
1969 | 1970 | ||
1970 | protected bool CrossAttachmentsIntoNewRegion(GridRegion destination, ScenePresence sp, bool silent) | 1971 | /// <summary> |
1972 | /// Cross the attachments for an avatar into the destination region. | ||
1973 | /// </summary> | ||
1974 | /// <remarks> | ||
1975 | /// This is only invoked for simulators released prior to April 2011. Versions of OpenSimulator since then | ||
1976 | /// transfer attachments in one go as part of the ChildAgentDataUpdate data passed in the update agent call. | ||
1977 | /// </remarks> | ||
1978 | /// <param name='destination'></param> | ||
1979 | /// <param name='sp'></param> | ||
1980 | /// <param name='silent'></param> | ||
1981 | protected void CrossAttachmentsIntoNewRegion(GridRegion destination, ScenePresence sp, bool silent) | ||
1971 | { | 1982 | { |
1972 | List<SceneObjectGroup> m_attachments = sp.GetAttachments(); | 1983 | List<SceneObjectGroup> attachments = sp.GetAttachments(); |
1973 | 1984 | ||
1974 | // Validate | 1985 | // m_log.DebugFormat( |
1975 | // foreach (SceneObjectGroup gobj in m_attachments) | 1986 | // "[ENTITY TRANSFER MODULE]: Crossing {0} attachments into {1} for {2}", |
1976 | // { | 1987 | // m_attachments.Count, destination.RegionName, sp.Name); |
1977 | // if (gobj == null || gobj.IsDeleted) | ||
1978 | // return false; | ||
1979 | // } | ||
1980 | 1988 | ||
1981 | foreach (SceneObjectGroup gobj in m_attachments) | 1989 | foreach (SceneObjectGroup gobj in attachments) |
1982 | { | 1990 | { |
1983 | // If the prim group is null then something must have happened to it! | 1991 | // If the prim group is null then something must have happened to it! |
1984 | if (gobj != null && !gobj.IsDeleted) | 1992 | if (gobj != null && !gobj.IsDeleted) |
1985 | { | 1993 | { |
1986 | // Set the parent localID to 0 so it transfers over properly. | 1994 | SceneObjectGroup clone = (SceneObjectGroup)gobj.CloneForNewScene(); |
1987 | gobj.RootPart.SetParentLocalId(0); | 1995 | clone.RootPart.GroupPosition = gobj.RootPart.AttachedPos; |
1988 | gobj.AbsolutePosition = gobj.RootPart.AttachedPos; | 1996 | clone.IsAttachment = false; |
1989 | gobj.IsAttachment = false; | 1997 | |
1990 | //gobj.RootPart.LastOwnerID = gobj.GetFromAssetID(); | 1998 | //gobj.RootPart.LastOwnerID = gobj.GetFromAssetID(); |
1991 | m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Sending attachment {0} to region {1}", gobj.UUID, destination.RegionName); | 1999 | m_log.DebugFormat( |
1992 | CrossPrimGroupIntoNewRegion(destination, Vector3.Zero, gobj, silent); | 2000 | "[ENTITY TRANSFER MODULE]: Sending attachment {0} to region {1}", |
2001 | clone.UUID, destination.RegionName); | ||
2002 | |||
2003 | CrossPrimGroupIntoNewRegion(destination, Vector3.Zero, clone, silent); | ||
1993 | } | 2004 | } |
1994 | } | 2005 | } |
1995 | 2006 | ||
1996 | sp.ClearAttachments(); | 2007 | sp.ClearAttachments(); |
1997 | |||
1998 | return true; | ||
1999 | } | 2008 | } |
2000 | 2009 | ||
2001 | #endregion | 2010 | #endregion |