diff options
author | Melanie Thielker | 2008-10-03 13:45:54 +0000 |
---|---|---|
committer | Melanie Thielker | 2008-10-03 13:45:54 +0000 |
commit | 36097a8198772d937c82e7bfc6e01a643d7785af (patch) | |
tree | de4a6b516edf12ef24edee02bbd228c1be5d19fd /OpenSim/Region/Environment | |
parent | fix the sqlite break. There were two issue here: (diff) | |
download | opensim-SC-36097a8198772d937c82e7bfc6e01a643d7785af.zip opensim-SC-36097a8198772d937c82e7bfc6e01a643d7785af.tar.gz opensim-SC-36097a8198772d937c82e7bfc6e01a643d7785af.tar.bz2 opensim-SC-36097a8198772d937c82e7bfc6e01a643d7785af.tar.xz |
Prevent attachments to be persisted in the destination region when the
avatar is not present there.
Diffstat (limited to 'OpenSim/Region/Environment')
4 files changed, 17 insertions, 5 deletions
diff --git a/OpenSim/Region/Environment/Modules/ContentManagementSystem/CMModel.cs b/OpenSim/Region/Environment/Modules/ContentManagementSystem/CMModel.cs index 1a41c7b..ff9423f 100644 --- a/OpenSim/Region/Environment/Modules/ContentManagementSystem/CMModel.cs +++ b/OpenSim/Region/Environment/Modules/ContentManagementSystem/CMModel.cs | |||
@@ -258,7 +258,7 @@ namespace OpenSim.Region.Environment.Modules.ContentManagement | |||
258 | try | 258 | try |
259 | { | 259 | { |
260 | // I thought that the DeleteGroup() function would handle all of this, but it doesn't. I'm not sure WHAT it handles. | 260 | // I thought that the DeleteGroup() function would handle all of this, but it doesn't. I'm not sure WHAT it handles. |
261 | ((SceneObjectGroup)scene.Entities[uuid]).DetachFromBackup((SceneObjectGroup)scene.Entities[uuid]); | 261 | ((SceneObjectGroup)scene.Entities[uuid]).DetachFromBackup(); |
262 | scene.PhysicsScene.RemovePrim(((SceneObjectGroup)scene.Entities[uuid]).RootPart.PhysActor); | 262 | scene.PhysicsScene.RemovePrim(((SceneObjectGroup)scene.Entities[uuid]).RootPart.PhysActor); |
263 | scene.SendKiPrimitive(scene.Entities[uuid].LocalId); | 263 | scene.SendKiPrimitive(scene.Entities[uuid].LocalId); |
264 | scene.m_innerScene.DeleteSceneObject(uuid, false); | 264 | scene.m_innerScene.DeleteSceneObject(uuid, false); |
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index d63544a..f58f334 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs | |||
@@ -517,6 +517,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
517 | group.SetFromAssetID(newAssetID); | 517 | group.SetFromAssetID(newAssetID); |
518 | } | 518 | } |
519 | group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos); | 519 | group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos); |
520 | // In case it is later dropped again, don't let | ||
521 | // it get cleaned up | ||
522 | // | ||
523 | group.RootPart.RemFlag(PrimFlags.TemporaryOnRez); | ||
520 | } | 524 | } |
521 | else | 525 | else |
522 | { | 526 | { |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 8f8c89e..09ebbee 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -2052,6 +2052,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
2052 | { | 2052 | { |
2053 | if (RootPrim.Shape.State != 0) | 2053 | if (RootPrim.Shape.State != 0) |
2054 | { | 2054 | { |
2055 | // Never persist | ||
2056 | |||
2057 | grp.DetachFromBackup(); | ||
2058 | |||
2055 | // Attachment | 2059 | // Attachment |
2056 | ScenePresence sp = GetScenePresence(grp.OwnerID); | 2060 | ScenePresence sp = GetScenePresence(grp.OwnerID); |
2057 | if (sp != null) | 2061 | if (sp != null) |
@@ -2063,6 +2067,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
2063 | grp.SetFromAssetID(grp.RootPart.LastOwnerID); | 2067 | grp.SetFromAssetID(grp.RootPart.LastOwnerID); |
2064 | AttachObject(sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition); | 2068 | AttachObject(sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition); |
2065 | } | 2069 | } |
2070 | else | ||
2071 | { | ||
2072 | RootPrim.AddFlag(PrimFlags.TemporaryOnRez); | ||
2073 | } | ||
2066 | } | 2074 | } |
2067 | } | 2075 | } |
2068 | } | 2076 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 482d936..ebd79e2 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -713,7 +713,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
713 | // don't attach attachments to child agents | 713 | // don't attach attachments to child agents |
714 | if (avatar.IsChildAgent) return; | 714 | if (avatar.IsChildAgent) return; |
715 | 715 | ||
716 | DetachFromBackup(this); | 716 | DetachFromBackup(); |
717 | m_rootPart.AttachedAvatar = agentID; | 717 | m_rootPart.AttachedAvatar = agentID; |
718 | 718 | ||
719 | 719 | ||
@@ -955,7 +955,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
955 | // code needs a redesign. | 955 | // code needs a redesign. |
956 | m_isDeleted = true; | 956 | m_isDeleted = true; |
957 | 957 | ||
958 | DetachFromBackup(this); | 958 | DetachFromBackup(); |
959 | 959 | ||
960 | lock (m_parts) | 960 | lock (m_parts) |
961 | { | 961 | { |
@@ -1925,9 +1925,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1925 | /// Stop this object from being persisted over server restarts. | 1925 | /// Stop this object from being persisted over server restarts. |
1926 | /// </summary> | 1926 | /// </summary> |
1927 | /// <param name="objectGroup"></param> | 1927 | /// <param name="objectGroup"></param> |
1928 | public void DetachFromBackup(SceneObjectGroup objectGroup) | 1928 | public void DetachFromBackup() |
1929 | { | 1929 | { |
1930 | m_scene.EventManager.OnBackup -= objectGroup.ProcessBackup; | 1930 | m_scene.EventManager.OnBackup -= ProcessBackup; |
1931 | } | 1931 | } |
1932 | 1932 | ||
1933 | private void LinkNonRootPart(SceneObjectPart part, Vector3 oldGroupPosition, Quaternion oldGroupRotation) | 1933 | private void LinkNonRootPart(SceneObjectPart part, Vector3 oldGroupPosition, Quaternion oldGroupRotation) |