diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index d2f33b0..12f0489 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -2433,9 +2433,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
2433 | return successYN; | 2433 | return successYN; |
2434 | } | 2434 | } |
2435 | 2435 | ||
2436 | /// <summary> | ||
2437 | /// Called when objects or attachments cross the border between regions. | ||
2438 | /// </summary> | ||
2439 | /// <param name="sog"></param> | ||
2440 | /// <returns></returns> | ||
2436 | public bool IncomingCreateObject(ISceneObject sog) | 2441 | public bool IncomingCreateObject(ISceneObject sog) |
2437 | { | 2442 | { |
2438 | //m_log.Debug(" >>> IncomingCreateObject <<< " + ((SceneObjectGroup)sog).AbsolutePosition + " deleted? " + ((SceneObjectGroup)sog).IsDeleted); | 2443 | //m_log.Debug(" >>> IncomingCreateObject(sog) <<< " + ((SceneObjectGroup)sog).AbsolutePosition + " deleted? " + ((SceneObjectGroup)sog).IsDeleted); |
2439 | SceneObjectGroup newObject; | 2444 | SceneObjectGroup newObject; |
2440 | try | 2445 | try |
2441 | { | 2446 | { |
@@ -2452,7 +2457,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
2452 | m_log.DebugFormat("[SCENE]: Problem adding scene object {0} in {1} ", sog.UUID, RegionInfo.RegionName); | 2457 | m_log.DebugFormat("[SCENE]: Problem adding scene object {0} in {1} ", sog.UUID, RegionInfo.RegionName); |
2453 | return false; | 2458 | return false; |
2454 | } | 2459 | } |
2460 | |||
2455 | newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, 1); | 2461 | newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, 1); |
2462 | |||
2463 | // Do this as late as possible so that listeners have full access to the incoming object | ||
2464 | EventManager.TriggerOnIncomingSceneObject(newObject); | ||
2465 | |||
2456 | return true; | 2466 | return true; |
2457 | } | 2467 | } |
2458 | 2468 | ||
@@ -2464,6 +2474,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
2464 | /// <returns>False</returns> | 2474 | /// <returns>False</returns> |
2465 | public virtual bool IncomingCreateObject(UUID userID, UUID itemID) | 2475 | public virtual bool IncomingCreateObject(UUID userID, UUID itemID) |
2466 | { | 2476 | { |
2477 | //m_log.DebugFormat(" >>> IncomingCreateObject(userID, itemID) <<< {0} {1}", userID, itemID); | ||
2478 | |||
2467 | ScenePresence sp = GetScenePresence(userID); | 2479 | ScenePresence sp = GetScenePresence(userID); |
2468 | if (sp != null) | 2480 | if (sp != null) |
2469 | { | 2481 | { |
@@ -2498,7 +2510,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2498 | foreach (SceneObjectPart p in sceneObject.Children.Values) | 2510 | foreach (SceneObjectPart p in sceneObject.Children.Values) |
2499 | p.LocalId = 0; | 2511 | p.LocalId = 0; |
2500 | 2512 | ||
2501 | if ((sceneObject.RootPart.Shape.PCode == (byte)PCode.Prim) && (sceneObject.RootPart.Shape.State != 0)) // Attachment | 2513 | if (sceneObject.IsAttachmentCheckFull()) // Attachment |
2502 | { | 2514 | { |
2503 | sceneObject.RootPart.AddFlag(PrimFlags.TemporaryOnRez); | 2515 | sceneObject.RootPart.AddFlag(PrimFlags.TemporaryOnRez); |
2504 | sceneObject.RootPart.AddFlag(PrimFlags.Phantom); | 2516 | sceneObject.RootPart.AddFlag(PrimFlags.Phantom); |
@@ -2523,29 +2535,23 @@ namespace OpenSim.Region.Framework.Scenes | |||
2523 | 2535 | ||
2524 | //RootPrim.SetParentLocalId(parentLocalID); | 2536 | //RootPrim.SetParentLocalId(parentLocalID); |
2525 | 2537 | ||
2526 | m_log.DebugFormat("[ATTACHMENT]: Received " + | 2538 | m_log.DebugFormat( |
2527 | "attachment {0}, inworld asset id {1}", | 2539 | "[ATTACHMENT]: Received attachment {0}, inworld asset id {1}", grp.GetFromItemID(), grp.UUID); |
2528 | //grp.RootPart.LastOwnerID.ToString(), | ||
2529 | grp.GetFromItemID(), | ||
2530 | grp.UUID.ToString()); | ||
2531 | 2540 | ||
2532 | //grp.SetFromAssetID(grp.RootPart.LastOwnerID); | 2541 | //grp.SetFromAssetID(grp.RootPart.LastOwnerID); |
2533 | m_log.DebugFormat("[ATTACHMENT]: Attach " + | 2542 | m_log.DebugFormat( |
2534 | "to avatar {0} at position {1}", | 2543 | "[ATTACHMENT]: Attach to avatar {0} at position {1}", sp.UUID, grp.AbsolutePosition); |
2535 | sp.UUID.ToString(), grp.AbsolutePosition); | 2544 | |
2536 | AttachObject(sp.ControllingClient, | 2545 | AttachObject( |
2537 | grp.LocalId, (uint)0, | 2546 | sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition, false); |
2538 | grp.GroupRotation, | ||
2539 | grp.AbsolutePosition, false); | ||
2540 | RootPrim.RemFlag(PrimFlags.TemporaryOnRez); | 2547 | RootPrim.RemFlag(PrimFlags.TemporaryOnRez); |
2541 | grp.SendGroupFullUpdate(); | 2548 | grp.SendGroupFullUpdate(); |
2542 | } | 2549 | } |
2543 | else | 2550 | else |
2544 | { | 2551 | { |
2545 | RootPrim.RemFlag(PrimFlags.TemporaryOnRez); | 2552 | RootPrim.RemFlag(PrimFlags.TemporaryOnRez); |
2546 | RootPrim.AddFlag(PrimFlags.TemporaryOnRez); | 2553 | RootPrim.AddFlag(PrimFlags.TemporaryOnRez); |
2547 | } | 2554 | } |
2548 | |||
2549 | } | 2555 | } |
2550 | else | 2556 | else |
2551 | { | 2557 | { |