aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs5
-rw-r--r--OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs3
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs71
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs4
5 files changed, 43 insertions, 42 deletions
diff --git a/OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs b/OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs
index 3a9df4a..5c2fc1c 100644
--- a/OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs
+++ b/OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs
@@ -218,8 +218,9 @@ namespace OpenSim.Region.CoreModules.Communications.Local
218 { 218 {
219 if (s.RegionInfo.RegionHandle == regionHandle) 219 if (s.RegionInfo.RegionHandle == regionHandle)
220 { 220 {
221 //m_log.Debug("[LOCAL COMMS]: Found region to SendCreateObject"); 221 //m_log.Debug("[LOCAL COMMS]: Found region to SendCreateObject");
222 return s.IncomingCreateObject(sog); 222 ISceneObject sogClone = sog.CloneForNewScene();
223 return s.IncomingCreateObject(sogClone);
223 } 224 }
224 } 225 }
225 return false; 226 return false;
diff --git a/OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs b/OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs
index b4f4814..8a4bb09 100644
--- a/OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs
+++ b/OpenSim/Region/CoreModules/Communications/REST/RESTInterregionComms.cs
@@ -223,8 +223,7 @@ namespace OpenSim.Region.CoreModules.Communications.REST
223 public bool SendCreateObject(ulong regionHandle, ISceneObject sog) 223 public bool SendCreateObject(ulong regionHandle, ISceneObject sog)
224 { 224 {
225 // Try local first 225 // Try local first
226 ISceneObject sogClone = sog.CloneForNewScene(); 226 if (m_localBackend.SendCreateObject(regionHandle, sog))
227 if (m_localBackend.SendCreateObject(regionHandle, sogClone))
228 { 227 {
229 //m_log.Debug("[REST COMMS]: LocalBackEnd SendCreateObject succeeded"); 228 //m_log.Debug("[REST COMMS]: LocalBackEnd SendCreateObject succeeded");
230 return true; 229 return true;
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index b2d77f5..fd979a3 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2168,7 +2168,7 @@ namespace OpenSim.Region.Framework.Scenes
2168 2168
2169 public bool IncomingCreateObject(ISceneObject sog) 2169 public bool IncomingCreateObject(ISceneObject sog)
2170 { 2170 {
2171 //Console.WriteLine(" >>> IncomingCreateObject <<<"); 2171 //Console.WriteLine(" >>> IncomingCreateObject <<< " + ((SceneObjectGroup)sog).AbsolutePosition + " deleted? " + ((SceneObjectGroup)sog).IsDeleted);
2172 SceneObjectGroup newObject; 2172 SceneObjectGroup newObject;
2173 try 2173 try
2174 { 2174 {
@@ -2201,7 +2201,6 @@ namespace OpenSim.Region.Framework.Scenes
2201 2201
2202 return false; 2202 return false;
2203 } 2203 }
2204
2205 // Force allocation of new LocalId 2204 // Force allocation of new LocalId
2206 // 2205 //
2207 foreach (SceneObjectPart p in sceneObject.Children.Values) 2206 foreach (SceneObjectPart p in sceneObject.Children.Values)
@@ -2209,59 +2208,57 @@ namespace OpenSim.Region.Framework.Scenes
2209 2208
2210 if (sceneObject.RootPart.Shape.PCode == (byte)PCode.Prim) 2209 if (sceneObject.RootPart.Shape.PCode == (byte)PCode.Prim)
2211 { 2210 {
2212 if (sceneObject.RootPart.Shape.State != 0) 2211 if (sceneObject.RootPart.Shape.State != 0) // Attchment
2213 { 2212 {
2213
2214 sceneObject.RootPart.AddFlag(PrimFlags.TemporaryOnRez);
2215
2216 AddRestoredSceneObject(sceneObject, false, false);
2217
2218 // Handle attachment special case
2219 //
2220 //SceneObjectPart RootPrim = GetSceneObjectPart(primID);
2221 SceneObjectPart RootPrim = sceneObject.RootPart;
2222
2214 // Fix up attachment Parent Local ID 2223 // Fix up attachment Parent Local ID
2215 // 2224 //
2216 ScenePresence sp = GetScenePresence(sceneObject.OwnerID); 2225 ScenePresence sp = GetScenePresence(sceneObject.OwnerID);
2217 2226
2218 uint parentLocalID = 0; 2227 uint parentLocalID = 0;
2219 if (sp != null) 2228 if (sp != null)
2229 {
2220 parentLocalID = sp.LocalId; 2230 parentLocalID = sp.LocalId;
2221 2231
2222 sceneObject.RootPart.IsAttachment = true; 2232 //sceneObject.RootPart.IsAttachment = true;
2223 sceneObject.RootPart.SetParentLocalId(parentLocalID); 2233 //sceneObject.RootPart.SetParentLocalId(parentLocalID);
2224
2225 AddRestoredSceneObject(sceneObject, false, false);
2226
2227 // Handle attachment special case
2228 //
2229 SceneObjectPart RootPrim = GetSceneObjectPart(primID);
2230 //SceneObjectPart RootPrim = sceneObject.RootPart;
2231 2234
2232 if (RootPrim != null) 2235 SceneObjectGroup grp = sceneObject;
2233 {
2234 SceneObjectGroup grp = RootPrim.ParentGroup;
2235 2236
2236 RootPrim.SetParentLocalId(parentLocalID); 2237 //RootPrim.SetParentLocalId(parentLocalID);
2237 2238
2238 if (grp != null) 2239 m_log.DebugFormat("[ATTACHMENT]: Received " +
2239 {
2240 m_log.DebugFormat("[ATTACHMENT]: Received " +
2241 "attachment {0}, inworld asset id {1}", 2240 "attachment {0}, inworld asset id {1}",
2242 //grp.RootPart.LastOwnerID.ToString(), 2241 //grp.RootPart.LastOwnerID.ToString(),
2243 grp.GetFromAssetID(), 2242 grp.GetFromAssetID(),
2244 grp.UUID.ToString()); 2243 grp.UUID.ToString());
2245 2244
2246 if (sp != null) 2245 //grp.SetFromAssetID(grp.RootPart.LastOwnerID);
2247 { 2246 m_log.DebugFormat("[ATTACHMENT]: Attach " +
2248 //grp.SetFromAssetID(grp.RootPart.LastOwnerID); 2247 "to avatar {0} at position {1}",
2249 m_log.DebugFormat("[ATTACHMENT]: Attach " + 2248 sp.UUID.ToString(), grp.AbsolutePosition);
2250 "to avatar {0}", 2249 AttachObject(sp.ControllingClient,
2251 sp.UUID.ToString()); 2250 grp.LocalId, (uint)0,
2252 AttachObject(sp.ControllingClient, 2251 grp.GroupRotation,
2253 grp.LocalId, (uint)0, 2252 grp.AbsolutePosition, false);
2254 grp.GroupRotation, 2253 RootPrim.RemFlag(PrimFlags.TemporaryOnRez);
2255 grp.AbsolutePosition, false); 2254 grp.SendGroupFullUpdate();
2256 grp.SendGroupFullUpdate(); 2255 }
2257 } 2256 else
2258 else 2257 {
2259 { 2258 RootPrim.RemFlag(PrimFlags.TemporaryOnRez);
2260 RootPrim.RemFlag(PrimFlags.TemporaryOnRez); 2259 RootPrim.AddFlag(PrimFlags.TemporaryOnRez);
2261 RootPrim.AddFlag(PrimFlags.TemporaryOnRez);
2262 }
2263 }
2264 } 2260 }
2261
2265 } 2262 }
2266 else 2263 else
2267 { 2264 {
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
index c3485ab..e1362f9 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
@@ -309,7 +309,7 @@ namespace OpenSim.Region.Framework.Scenes
309 309
310 public string GetStateSnapshot() 310 public string GetStateSnapshot()
311 { 311 {
312 Console.WriteLine(" >>> GetStateSnapshot <<<"); 312 //Console.WriteLine(" >>> GetStateSnapshot <<<");
313 313
314 List<string> assemblies = new List<string>(); 314 List<string> assemblies = new List<string>();
315 Dictionary<UUID, string> states = new Dictionary<UUID, string>(); 315 Dictionary<UUID, string> states = new Dictionary<UUID, string>();
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 520b228..997cce5 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1717,6 +1717,9 @@ namespace OpenSim.Region.Framework.Scenes
1717 if (m_rootPart == null) 1717 if (m_rootPart == null)
1718 return; 1718 return;
1719 1719
1720 if ((RootPart.Flags & PrimFlags.TemporaryOnRez) != 0)
1721 return;
1722
1720 lock (m_parts) 1723 lock (m_parts)
1721 { 1724 {
1722 bool UsePhysics = ((RootPart.Flags & PrimFlags.Physics) != 0); 1725 bool UsePhysics = ((RootPart.Flags & PrimFlags.Physics) != 0);
@@ -3036,6 +3039,7 @@ namespace OpenSim.Region.Framework.Scenes
3036 public virtual ISceneObject CloneForNewScene() 3039 public virtual ISceneObject CloneForNewScene()
3037 { 3040 {
3038 SceneObjectGroup sog = Copy(this.OwnerID, this.GroupID, false); 3041 SceneObjectGroup sog = Copy(this.OwnerID, this.GroupID, false);
3042 sog.m_isDeleted = false;
3039 return sog; 3043 return sog;
3040 } 3044 }
3041 3045