diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index e8c4978..f8ca047 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -1850,9 +1850,31 @@ namespace OpenSim.Region.Framework.Scenes | |||
1850 | /// true if the object was added, false if an object with the same uuid was already in the scene | 1850 | /// true if the object was added, false if an object with the same uuid was already in the scene |
1851 | /// </returns> | 1851 | /// </returns> |
1852 | public bool AddRestoredSceneObject( | 1852 | public bool AddRestoredSceneObject( |
1853 | SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted, bool sendClientUpdates) | ||
1854 | { | ||
1855 | return m_sceneGraph.AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted, sendClientUpdates); | ||
1856 | } | ||
1857 | |||
1858 | /// <summary> | ||
1859 | /// Add an object into the scene that has come from storage | ||
1860 | /// </summary> | ||
1861 | /// | ||
1862 | /// <param name="sceneObject"></param> | ||
1863 | /// <param name="attachToBackup"> | ||
1864 | /// If true, changes to the object will be reflected in its persisted data | ||
1865 | /// If false, the persisted data will not be changed even if the object in the scene is changed | ||
1866 | /// </param> | ||
1867 | /// <param name="alreadyPersisted"> | ||
1868 | /// If true, we won't persist this object until it changes | ||
1869 | /// If false, we'll persist this object immediately | ||
1870 | /// </param> | ||
1871 | /// <returns> | ||
1872 | /// true if the object was added, false if an object with the same uuid was already in the scene | ||
1873 | /// </returns> | ||
1874 | public bool AddRestoredSceneObject( | ||
1853 | SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted) | 1875 | SceneObjectGroup sceneObject, bool attachToBackup, bool alreadyPersisted) |
1854 | { | 1876 | { |
1855 | return m_sceneGraph.AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted); | 1877 | return AddRestoredSceneObject(sceneObject, attachToBackup, alreadyPersisted, true); |
1856 | } | 1878 | } |
1857 | 1879 | ||
1858 | /// <summary> | 1880 | /// <summary> |
@@ -2465,7 +2487,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2465 | /// <returns></returns> | 2487 | /// <returns></returns> |
2466 | public bool IncomingCreateObject(ISceneObject sog) | 2488 | public bool IncomingCreateObject(ISceneObject sog) |
2467 | { | 2489 | { |
2468 | //m_log.Debug(" >>> IncomingCreateObject(sog) <<< " + ((SceneObjectGroup)sog).AbsolutePosition + " deleted? " + ((SceneObjectGroup)sog).IsDeleted); | 2490 | m_log.Debug(" >>> IncomingCreateObject(sog) <<< " + ((SceneObjectGroup)sog).AbsolutePosition + " deleted? " + ((SceneObjectGroup)sog).IsDeleted); |
2469 | SceneObjectGroup newObject; | 2491 | SceneObjectGroup newObject; |
2470 | try | 2492 | try |
2471 | { | 2493 | { |
@@ -2537,10 +2559,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
2537 | 2559 | ||
2538 | if (sceneObject.IsAttachmentCheckFull()) // Attachment | 2560 | if (sceneObject.IsAttachmentCheckFull()) // Attachment |
2539 | { | 2561 | { |
2562 | m_log.DebugFormat("[SCENE]: Adding attachment {0} {1}", sceneObject.Name, sceneObject.LocalId); | ||
2563 | |||
2540 | sceneObject.RootPart.AddFlag(PrimFlags.TemporaryOnRez); | 2564 | sceneObject.RootPart.AddFlag(PrimFlags.TemporaryOnRez); |
2541 | sceneObject.RootPart.AddFlag(PrimFlags.Phantom); | 2565 | sceneObject.RootPart.AddFlag(PrimFlags.Phantom); |
2542 | 2566 | ||
2543 | AddRestoredSceneObject(sceneObject, false, false); | 2567 | AddRestoredSceneObject(sceneObject, false, false, false); |
2544 | 2568 | ||
2545 | // Handle attachment special case | 2569 | // Handle attachment special case |
2546 | SceneObjectPart RootPrim = sceneObject.RootPart; | 2570 | SceneObjectPart RootPrim = sceneObject.RootPart; |
@@ -2548,6 +2572,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2548 | // Fix up attachment Parent Local ID | 2572 | // Fix up attachment Parent Local ID |
2549 | ScenePresence sp = GetScenePresence(sceneObject.OwnerID); | 2573 | ScenePresence sp = GetScenePresence(sceneObject.OwnerID); |
2550 | 2574 | ||
2575 | Console.WriteLine("AAAA"); | ||
2576 | |||
2551 | //uint parentLocalID = 0; | 2577 | //uint parentLocalID = 0; |
2552 | if (sp != null) | 2578 | if (sp != null) |
2553 | { | 2579 | { |
@@ -2566,20 +2592,25 @@ namespace OpenSim.Region.Framework.Scenes | |||
2566 | //grp.SetFromAssetID(grp.RootPart.LastOwnerID); | 2592 | //grp.SetFromAssetID(grp.RootPart.LastOwnerID); |
2567 | m_log.DebugFormat( | 2593 | m_log.DebugFormat( |
2568 | "[ATTACHMENT]: Attach to avatar {0} at position {1}", sp.UUID, grp.AbsolutePosition); | 2594 | "[ATTACHMENT]: Attach to avatar {0} at position {1}", sp.UUID, grp.AbsolutePosition); |
2569 | 2595 | ||
2596 | RootPrim.RemFlag(PrimFlags.TemporaryOnRez); | ||
2570 | AttachObject( | 2597 | AttachObject( |
2571 | sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition, false); | 2598 | sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition, false); |
2572 | RootPrim.RemFlag(PrimFlags.TemporaryOnRez); | 2599 | |
2573 | grp.SendGroupFullUpdate(); | 2600 | //grp.SendGroupFullUpdate(); |
2574 | } | 2601 | } |
2575 | else | 2602 | else |
2576 | { | 2603 | { |
2577 | RootPrim.RemFlag(PrimFlags.TemporaryOnRez); | 2604 | RootPrim.RemFlag(PrimFlags.TemporaryOnRez); |
2578 | RootPrim.AddFlag(PrimFlags.TemporaryOnRez); | 2605 | RootPrim.AddFlag(PrimFlags.TemporaryOnRez); |
2579 | } | 2606 | } |
2607 | |||
2608 | Console.WriteLine("BBBB"); | ||
2580 | } | 2609 | } |
2581 | else | 2610 | else |
2582 | { | 2611 | { |
2612 | m_log.DebugFormat("[SCENE]: Adding ordinary object {0} {1}", sceneObject.Name, sceneObject.LocalId); | ||
2613 | |||
2583 | AddRestoredSceneObject(sceneObject, true, false); | 2614 | AddRestoredSceneObject(sceneObject, true, false); |
2584 | 2615 | ||
2585 | if (!Permissions.CanObjectEntry(sceneObject.UUID, | 2616 | if (!Permissions.CanObjectEntry(sceneObject.UUID, |