diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.Inventory.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index c6cee75..5b21332 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -2339,9 +2339,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
2339 | EventManager.TriggerOnAttach(localID, itemID, avatarID); | 2339 | EventManager.TriggerOnAttach(localID, itemID, avatarID); |
2340 | } | 2340 | } |
2341 | 2341 | ||
2342 | public UUID RezSingleAttachment(IClientAPI remoteClient, UUID itemID, | 2342 | /// <summary> |
2343 | uint AttachmentPt) | 2343 | /// Called when the client receives a request to rez a single attachment on to the avatar from inventory |
2344 | /// (RezSingleAttachmentFromInv packet). | ||
2345 | /// </summary> | ||
2346 | /// <param name="remoteClient"></param> | ||
2347 | /// <param name="itemID"></param> | ||
2348 | /// <param name="AttachmentPt"></param> | ||
2349 | /// <returns></returns> | ||
2350 | public UUID RezSingleAttachment(IClientAPI remoteClient, UUID itemID, uint AttachmentPt) | ||
2344 | { | 2351 | { |
2352 | m_log.DebugFormat("[USER INVENTORY]: Rezzing single attachment from item {0} for {1}", itemID, remoteClient.Name); | ||
2353 | |||
2345 | SceneObjectGroup att = m_sceneGraph.RezSingleAttachment(remoteClient, itemID, AttachmentPt); | 2354 | SceneObjectGroup att = m_sceneGraph.RezSingleAttachment(remoteClient, itemID, AttachmentPt); |
2346 | 2355 | ||
2347 | if (att == null) | 2356 | if (att == null) |
@@ -2353,9 +2362,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
2353 | return RezSingleAttachment(att, remoteClient, itemID, AttachmentPt); | 2362 | return RezSingleAttachment(att, remoteClient, itemID, AttachmentPt); |
2354 | } | 2363 | } |
2355 | 2364 | ||
2356 | public UUID RezSingleAttachment(SceneObjectGroup att, | 2365 | /// <summary> |
2357 | IClientAPI remoteClient, UUID itemID, uint AttachmentPt) | 2366 | /// Update the user inventory to reflect an attachment |
2367 | /// </summary> | ||
2368 | /// <param name="att"></param> | ||
2369 | /// <param name="remoteClient"></param> | ||
2370 | /// <param name="itemID"></param> | ||
2371 | /// <param name="AttachmentPt"></param> | ||
2372 | /// <returns></returns> | ||
2373 | public UUID RezSingleAttachment(SceneObjectGroup att, IClientAPI remoteClient, UUID itemID, uint AttachmentPt) | ||
2358 | { | 2374 | { |
2375 | m_log.DebugFormat( | ||
2376 | "[USER INVENTORY]: Updating inventory of {0} to show attachment of {1} (item ID {2})", | ||
2377 | remoteClient.Name, att.Name, itemID); | ||
2378 | |||
2359 | if (!att.IsDeleted) | 2379 | if (!att.IsDeleted) |
2360 | AttachmentPt = att.RootPart.AttachmentPoint; | 2380 | AttachmentPt = att.RootPart.AttachmentPoint; |
2361 | 2381 | ||
@@ -2394,8 +2414,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
2394 | return m_sceneGraph.AttachObject(controllingClient, localID, attachPoint, rot, pos, silent); | 2414 | return m_sceneGraph.AttachObject(controllingClient, localID, attachPoint, rot, pos, silent); |
2395 | } | 2415 | } |
2396 | 2416 | ||
2417 | /// <summary> | ||
2418 | /// This registers the item as attached in a user's inventory | ||
2419 | /// </summary> | ||
2420 | /// <param name="remoteClient"></param> | ||
2421 | /// <param name="AttachmentPt"></param> | ||
2422 | /// <param name="itemID"></param> | ||
2423 | /// <param name="att"></param> | ||
2397 | public void AttachObject(IClientAPI remoteClient, uint AttachmentPt, UUID itemID, SceneObjectGroup att) | 2424 | public void AttachObject(IClientAPI remoteClient, uint AttachmentPt, UUID itemID, SceneObjectGroup att) |
2398 | { | 2425 | { |
2426 | // m_log.DebugFormat( | ||
2427 | // "[USER INVENTORY]: Updating attachment {0} for {1} at {2} using item ID {3}", | ||
2428 | // att.Name, remoteClient.Name, AttachmentPt, itemID); | ||
2429 | |||
2399 | if (UUID.Zero == itemID) | 2430 | if (UUID.Zero == itemID) |
2400 | { | 2431 | { |
2401 | m_log.Error("[SCENE INVENTORY]: Unable to save attachment. Error inventory item ID."); | 2432 | m_log.Error("[SCENE INVENTORY]: Unable to save attachment. Error inventory item ID."); |
@@ -2423,10 +2454,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2423 | presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/); | 2454 | presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/); |
2424 | 2455 | ||
2425 | if (m_AvatarFactory != null) | 2456 | if (m_AvatarFactory != null) |
2426 | { | ||
2427 | m_AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); | 2457 | m_AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance); |
2428 | } | ||
2429 | |||
2430 | } | 2458 | } |
2431 | } | 2459 | } |
2432 | 2460 | ||
@@ -2509,6 +2537,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2509 | { | 2537 | { |
2510 | sog.SetOwnerId(ownerID); | 2538 | sog.SetOwnerId(ownerID); |
2511 | sog.SetGroup(groupID, remoteClient); | 2539 | sog.SetGroup(groupID, remoteClient); |
2540 | sog.ScheduleGroupForFullUpdate(); | ||
2512 | 2541 | ||
2513 | foreach (SceneObjectPart child in sog.Children.Values) | 2542 | foreach (SceneObjectPart child in sog.Children.Values) |
2514 | child.Inventory.ChangeInventoryOwner(ownerID); | 2543 | child.Inventory.ChangeInventoryOwner(ownerID); |
@@ -2530,6 +2559,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2530 | sog.SetOwnerId(groupID); | 2559 | sog.SetOwnerId(groupID); |
2531 | sog.ApplyNextOwnerPermissions(); | 2560 | sog.ApplyNextOwnerPermissions(); |
2532 | } | 2561 | } |
2562 | |||
2533 | } | 2563 | } |
2534 | 2564 | ||
2535 | foreach (uint localID in localIDs) | 2565 | foreach (uint localID in localIDs) |