aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment
diff options
context:
space:
mode:
authorMelanie Thielker2008-10-03 13:45:54 +0000
committerMelanie Thielker2008-10-03 13:45:54 +0000
commit36097a8198772d937c82e7bfc6e01a643d7785af (patch)
treede4a6b516edf12ef24edee02bbd228c1be5d19fd /OpenSim/Region/Environment
parentfix the sqlite break. There were two issue here: (diff)
downloadopensim-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')
-rw-r--r--OpenSim/Region/Environment/Modules/ContentManagementSystem/CMModel.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/InnerScene.cs4
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs8
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs8
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)