diff options
Diffstat (limited to 'OpenSim')
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 | ||