aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.Inventory.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.Inventory.cs316
1 files changed, 159 insertions, 157 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index 1e6ebf9..6bd5d1a 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -40,7 +40,7 @@ namespace OpenSim.Region.Environment.Scenes
40{ 40{
41 public partial class Scene 41 public partial class Scene
42 { 42 {
43 private static readonly ILog m_log 43 private static readonly ILog m_log
44 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 44 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
45 45
46 /// <summary> 46 /// <summary>
@@ -49,11 +49,11 @@ namespace OpenSim.Region.Environment.Scenes
49 public void StartScripts() 49 public void StartScripts()
50 { 50 {
51 m_log.Info("[PRIM INVENTORY]: Starting scripts in scene"); 51 m_log.Info("[PRIM INVENTORY]: Starting scripts in scene");
52 52
53 foreach (SceneObjectGroup group in Entities.Values) 53 foreach (SceneObjectGroup group in Entities.Values)
54 { 54 {
55 group.StartScripts(); 55 group.StartScripts();
56 } 56 }
57 } 57 }
58 58
59 /// <summary> 59 /// <summary>
@@ -64,9 +64,9 @@ namespace OpenSim.Region.Environment.Scenes
64 /// in which the item is to be placed.</param> 64 /// in which the item is to be placed.</param>
65 public void AddInventoryItem(IClientAPI remoteClient, InventoryItemBase item) 65 public void AddInventoryItem(IClientAPI remoteClient, InventoryItemBase item)
66 { 66 {
67 CachedUserInfo userInfo 67 CachedUserInfo userInfo
68 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); 68 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
69 69
70 if (userInfo != null) 70 if (userInfo != null)
71 { 71 {
72 userInfo.AddItem(remoteClient.AgentId, item); 72 userInfo.AddItem(remoteClient.AgentId, item);
@@ -88,9 +88,9 @@ namespace OpenSim.Region.Environment.Scenes
88 m_log.ErrorFormat( 88 m_log.ErrorFormat(
89 "[AGENT INVENTORY]: Agent {0} {1} was not found for add of item {2} {3}", 89 "[AGENT INVENTORY]: Agent {0} {1} was not found for add of item {2} {3}",
90 remoteClient.Name, remoteClient.AgentId, item.Name, item.ID); 90 remoteClient.Name, remoteClient.AgentId, item.Name, item.ID);
91 91
92 return; 92 return;
93 } 93 }
94 } 94 }
95 95
96 /// <summary> 96 /// <summary>
@@ -190,7 +190,7 @@ namespace OpenSim.Region.Environment.Scenes
190 { 190 {
191 // Retrieve group 191 // Retrieve group
192 SceneObjectPart part = GetSceneObjectPart(primId); 192 SceneObjectPart part = GetSceneObjectPart(primId);
193 SceneObjectGroup group = part.ParentGroup; 193 SceneObjectGroup group = part.ParentGroup;
194 if (null == group) 194 if (null == group)
195 { 195 {
196 m_log.ErrorFormat( 196 m_log.ErrorFormat(
@@ -200,30 +200,30 @@ namespace OpenSim.Region.Environment.Scenes
200 200
201 return; 201 return;
202 } 202 }
203 203
204 // Retrieve item 204 // Retrieve item
205 TaskInventoryItem item = group.GetInventoryItem(part.LocalId, itemId); 205 TaskInventoryItem item = group.GetInventoryItem(part.LocalId, itemId);
206 if (null == item) 206 if (null == item)
207 { 207 {
208 return; 208 return;
209 } 209 }
210 210
211 // Create new asset 211 // Create new asset
212 // XXX Hardcoding the numbers is a temporary measure - need an enumeration for this 212 // XXX Hardcoding the numbers is a temporary measure - need an enumeration for this
213 // There may well be one in libsecondlife 213 // There may well be one in libsecondlife
214 AssetBase asset = CreateAsset(item.Name, item.Description, 10, 10, data); 214 AssetBase asset = CreateAsset(item.Name, item.Description, 10, 10, data);
215 AssetCache.AddAsset(asset); 215 AssetCache.AddAsset(asset);
216 216
217 // Update item with new asset 217 // Update item with new asset
218 item.AssetID = asset.FullID; 218 item.AssetID = asset.FullID;
219 group.UpdateInventoryItem(item); 219 group.UpdateInventoryItem(item);
220 group.GetProperties(remoteClient); 220 group.GetProperties(remoteClient);
221 221
222 // Trigger rerunning of script (use TriggerRezScript event, see RezScript) 222 // Trigger rerunning of script (use TriggerRezScript event, see RezScript)
223 if (isScriptRunning) 223 if (isScriptRunning)
224 { 224 {
225 group.StopScript(part.LocalId, item.ItemID); 225 group.StopScript(part.LocalId, item.ItemID);
226 group.StartScript(part.LocalId, item.ItemID); 226 group.StartScript(part.LocalId, item.ItemID);
227 } 227 }
228 } 228 }
229 229
@@ -272,7 +272,7 @@ namespace OpenSim.Region.Environment.Scenes
272 if (userInfo != null && userInfo.RootFolder != null) 272 if (userInfo != null && userInfo.RootFolder != null)
273 { 273 {
274 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID); 274 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID);
275 275
276 if (item != null) 276 if (item != null)
277 { 277 {
278 if (LLUUID.Zero == transactionID) 278 if (LLUUID.Zero == transactionID)
@@ -298,11 +298,11 @@ namespace OpenSim.Region.Environment.Scenes
298 } 298 }
299 else 299 else
300 { 300 {
301 IAgentAssetTransactions agentTransactions = RequestModuleInterface<IAgentAssetTransactions>(); 301 IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>();
302 if (agentTransactions != null) 302 if (agentTransactions != null)
303 { 303 {
304 agentTransactions.HandleItemUpdateFromTransaction( 304 agentTransactions.HandleItemUpdateFromTransaction(
305 remoteClient, transactionID, item); 305 remoteClient, transactionID, item);
306 } 306 }
307 } 307 }
308 } 308 }
@@ -318,7 +318,7 @@ namespace OpenSim.Region.Environment.Scenes
318 "[AGENT INVENTORY]: Agent ID " + remoteClient.AgentId + " not found for an inventory item update."); 318 "[AGENT INVENTORY]: Agent ID " + remoteClient.AgentId + " not found for an inventory item update.");
319 } 319 }
320 } 320 }
321 321
322 /// <summary> 322 /// <summary>
323 /// Give an inventory item from one avatar to another 323 /// Give an inventory item from one avatar to another
324 /// </summary> 324 /// </summary>
@@ -328,13 +328,13 @@ namespace OpenSim.Region.Environment.Scenes
328 public void GiveInventoryItem(IClientAPI recipientClient, LLUUID senderId, LLUUID itemId) 328 public void GiveInventoryItem(IClientAPI recipientClient, LLUUID senderId, LLUUID itemId)
329 { 329 {
330 // Retrieve the item from the sender 330 // Retrieve the item from the sender
331 CachedUserInfo senderUserInfo = CommsManager.UserProfileCacheService.GetUserDetails(senderId); 331 CachedUserInfo senderUserInfo = CommsManager.UserProfileCacheService.GetUserDetails(senderId);
332 332
333 if (senderUserInfo == null) 333 if (senderUserInfo == null)
334 { 334 {
335 m_log.ErrorFormat( 335 m_log.ErrorFormat(
336 "[AGENT INVENTORY]: Failed to find sending user {0} for item {1}", senderId, itemId); 336 "[AGENT INVENTORY]: Failed to find sending user {0} for item {1}", senderId, itemId);
337 337
338 return; 338 return;
339 } 339 }
340 340
@@ -342,11 +342,11 @@ namespace OpenSim.Region.Environment.Scenes
342 { 342 {
343 InventoryItemBase item = senderUserInfo.RootFolder.HasItem(itemId); 343 InventoryItemBase item = senderUserInfo.RootFolder.HasItem(itemId);
344 if (item != null) 344 if (item != null)
345 { 345 {
346 // TODO get recipient's root folder 346 // TODO get recipient's root folder
347 CachedUserInfo recipientUserInfo 347 CachedUserInfo recipientUserInfo
348 = CommsManager.UserProfileCacheService.GetUserDetails(recipientClient.AgentId); 348 = CommsManager.UserProfileCacheService.GetUserDetails(recipientClient.AgentId);
349 349
350 if (recipientUserInfo != null) 350 if (recipientUserInfo != null)
351 { 351 {
352 // Insert a copy of the item into the recipient 352 // Insert a copy of the item into the recipient
@@ -373,15 +373,15 @@ namespace OpenSim.Region.Environment.Scenes
373 itemCopy.SaleType = item.SaleType; 373 itemCopy.SaleType = item.SaleType;
374 374
375 recipientUserInfo.AddItem(recipientClient.AgentId, itemCopy); 375 recipientUserInfo.AddItem(recipientClient.AgentId, itemCopy);
376 376
377 // Let the recipient client know about this new item 377 // Let the recipient client know about this new item
378 recipientClient.SendBulkUpdateInventory(itemCopy); 378 recipientClient.SendBulkUpdateInventory(itemCopy);
379 } 379 }
380 else 380 else
381 { 381 {
382 m_log.ErrorFormat( 382 m_log.ErrorFormat(
383 "[AGENT INVENTORY]: Could not find userinfo for recipient user {0}, {1} of item {2}, {3} from {4}", 383 "[AGENT INVENTORY]: Could not find userinfo for recipient user {0}, {1} of item {2}, {3} from {4}",
384 recipientClient.Name, recipientClient.AgentId, item.Name, 384 recipientClient.Name, recipientClient.AgentId, item.Name,
385 item.ID, senderId); 385 item.ID, senderId);
386 } 386 }
387 } 387 }
@@ -389,15 +389,15 @@ namespace OpenSim.Region.Environment.Scenes
389 { 389 {
390 m_log.ErrorFormat( 390 m_log.ErrorFormat(
391 "[AGENT INVENTORY]: Failed to find item {0} to give to {1}", itemId, senderId); 391 "[AGENT INVENTORY]: Failed to find item {0} to give to {1}", itemId, senderId);
392 392
393 return; 393 return;
394 } 394 }
395 } 395 }
396 else 396 else
397 { 397 {
398 m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemId + ", no root folder"); 398 m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemId.ToString() + ", no root folder");
399 return; 399 return;
400 } 400 }
401 } 401 }
402 402
403 public void CopyInventoryItem(IClientAPI remoteClient, uint callbackID, LLUUID oldAgentID, LLUUID oldItemID, 403 public void CopyInventoryItem(IClientAPI remoteClient, uint callbackID, LLUUID oldAgentID, LLUUID oldItemID,
@@ -406,14 +406,14 @@ namespace OpenSim.Region.Environment.Scenes
406 m_log.DebugFormat( 406 m_log.DebugFormat(
407 "[AGENT INVENTORY]: CopyInventoryItem received by {0} with oldAgentID {1}, oldItemID {2}, new FolderID {3}, newName {4}", 407 "[AGENT INVENTORY]: CopyInventoryItem received by {0} with oldAgentID {1}, oldItemID {2}, new FolderID {3}, newName {4}",
408 remoteClient.AgentId, oldAgentID, oldItemID, newFolderID, newName); 408 remoteClient.AgentId, oldAgentID, oldItemID, newFolderID, newName);
409 409
410 InventoryItemBase item = CommsManager.UserProfileCacheService.libraryRoot.HasItem(oldItemID); 410 InventoryItemBase item = CommsManager.UserProfileCacheService.libraryRoot.HasItem(oldItemID);
411 if (item == null) 411 if (item == null)
412 { 412 {
413 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(oldAgentID); 413 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(oldAgentID);
414 if (userInfo == null) 414 if (userInfo == null)
415 { 415 {
416 m_log.Error("[AGENT INVENTORY]: Failed to find user " + oldAgentID); 416 m_log.Error("[AGENT INVENTORY]: Failed to find user " + oldAgentID.ToString());
417 return; 417 return;
418 } 418 }
419 419
@@ -422,20 +422,20 @@ namespace OpenSim.Region.Environment.Scenes
422 item = userInfo.RootFolder.HasItem(oldItemID); 422 item = userInfo.RootFolder.HasItem(oldItemID);
423 if (item == null) 423 if (item == null)
424 { 424 {
425 m_log.Error("[AGENT INVENTORY]: Failed to find item " + oldItemID); 425 m_log.Error("[AGENT INVENTORY]: Failed to find item " + oldItemID.ToString());
426 return; 426 return;
427 } 427 }
428 } 428 }
429 else 429 else
430 { 430 {
431 m_log.Error("[AGENT INVENTORY]: Failed to find item " + oldItemID); 431 m_log.Error("[AGENT INVENTORY]: Failed to find item " + oldItemID.ToString());
432 return; 432 return;
433 } 433 }
434 } 434 }
435 435
436 AssetBase asset 436 AssetBase asset
437 = AssetCache.GetAsset( 437 = AssetCache.GetAsset(
438 item.AssetID, (item.AssetType == (int) AssetType.Texture ? true : false)); 438 item.AssetID, (item.AssetType == (int)AssetType.Texture ? true : false));
439 439
440 if (asset != null) 440 if (asset != null)
441 { 441 {
@@ -447,7 +447,7 @@ namespace OpenSim.Region.Environment.Scenes
447 { 447 {
448 m_log.ErrorFormat( 448 m_log.ErrorFormat(
449 "[AGENT INVENTORY]: Could not copy item {0} since asset {1} could not be found", 449 "[AGENT INVENTORY]: Could not copy item {0} since asset {1} could not be found",
450 item.Name, item.AssetID); 450 item.Name, item.AssetID);
451 } 451 }
452 } 452 }
453 453
@@ -472,7 +472,7 @@ namespace OpenSim.Region.Environment.Scenes
472 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); 472 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
473 if (userInfo == null) 473 if (userInfo == null)
474 { 474 {
475 m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId); 475 m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId.ToString());
476 return; 476 return;
477 } 477 }
478 478
@@ -493,13 +493,13 @@ namespace OpenSim.Region.Environment.Scenes
493 } 493 }
494 else 494 else
495 { 495 {
496 m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemID); 496 m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemID.ToString());
497 return; 497 return;
498 } 498 }
499 } 499 }
500 else 500 else
501 { 501 {
502 m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemID + ", no root folder"); 502 m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemID.ToString() + ", no root folder");
503 return; 503 return;
504 } 504 }
505 } 505 }
@@ -515,9 +515,9 @@ namespace OpenSim.Region.Environment.Scenes
515 private void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID folderID, uint callbackID, 515 private void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID folderID, uint callbackID,
516 AssetBase asset, uint nextOwnerMask) 516 AssetBase asset, uint nextOwnerMask)
517 { 517 {
518 CachedUserInfo userInfo 518 CachedUserInfo userInfo
519 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); 519 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
520 520
521 if (userInfo != null) 521 if (userInfo != null)
522 { 522 {
523 InventoryItemBase item = new InventoryItemBase(); 523 InventoryItemBase item = new InventoryItemBase();
@@ -539,8 +539,8 @@ namespace OpenSim.Region.Environment.Scenes
539 else 539 else
540 { 540 {
541 m_log.WarnFormat( 541 m_log.WarnFormat(
542 "No user details associated with client {0} uuid {1} in CreateNewInventoryItem!", 542 "No user details associated with client {0} uuid {1} in CreateNewInventoryItem!",
543 remoteClient.Name, remoteClient.AgentId); 543 remoteClient.Name, remoteClient.AgentId);
544 } 544 }
545 } 545 }
546 546
@@ -564,25 +564,25 @@ namespace OpenSim.Region.Environment.Scenes
564 byte wearableType, uint nextOwnerMask) 564 byte wearableType, uint nextOwnerMask)
565 { 565 {
566// m_log.DebugFormat("[AGENT INVENTORY]: Received request to create inventory item {0} in folder {1}", name, folderID); 566// m_log.DebugFormat("[AGENT INVENTORY]: Received request to create inventory item {0} in folder {1}", name, folderID);
567 567
568 if (transactionID == LLUUID.Zero) 568 if (transactionID == LLUUID.Zero)
569 { 569 {
570 CachedUserInfo userInfo 570 CachedUserInfo userInfo
571 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); 571 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
572 572
573 if (userInfo != null) 573 if (userInfo != null)
574 { 574 {
575 ScenePresence presence; 575 ScenePresence presence;
576 TryGetAvatar(remoteClient.AgentId, out presence); 576 TryGetAvatar(remoteClient.AgentId, out presence);
577 byte[] data = null; 577 byte[] data = null;
578 if (invType == 3 && presence != null) // libsecondlife.asset.assettype.landmark = 3 - needs to be turned into an enum 578 if(invType == 3 && presence != null) // libsecondlife.asset.assettype.landmark = 3 - needs to be turned into an enum
579 { 579 {
580 LLVector3 pos = presence.AbsolutePosition; 580 LLVector3 pos=presence.AbsolutePosition;
581 string strdata = String.Format("Landmark version 2\nregion_id {0}\nlocal_pos {1} {2} {3}\nregion_handle {4}\n", 581 string strdata=String.Format("Landmark version 2\nregion_id {0}\nlocal_pos {1} {2} {3}\nregion_handle {4}\n",
582 presence.Scene.RegionInfo.RegionID, 582 presence.Scene.RegionInfo.RegionID,
583 pos.X, pos.Y, pos.Z, 583 pos.X, pos.Y, pos.Z,
584 presence.RegionHandle); 584 presence.RegionHandle);
585 data = Encoding.ASCII.GetBytes(strdata); 585 data=Encoding.ASCII.GetBytes(strdata);
586 } 586 }
587 587
588 AssetBase asset = CreateAsset(name, description, invType, assetType, data); 588 AssetBase asset = CreateAsset(name, description, invType, assetType, data);
@@ -593,19 +593,21 @@ namespace OpenSim.Region.Environment.Scenes
593 else 593 else
594 { 594 {
595 m_log.ErrorFormat( 595 m_log.ErrorFormat(
596 "userInfo for agent uuid {0} unexpectedly null in CreateNewInventoryItem", 596 "userInfo for agent uuid {0} unexpectedly null in CreateNewInventoryItem",
597 remoteClient.AgentId); 597 remoteClient.AgentId);
598 } 598 }
599 } 599 }
600 else 600 else
601 { 601 {
602 IAgentAssetTransactions agentTransactions = RequestModuleInterface<IAgentAssetTransactions>(); 602 IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>();
603 if (agentTransactions != null) 603 if (agentTransactions != null)
604 { 604 {
605 agentTransactions.HandleItemCreationFromTransaction( 605 agentTransactions.HandleItemCreationFromTransaction(
606 remoteClient, transactionID, folderID, callbackID, description, 606 remoteClient, transactionID, folderID, callbackID, description,
607 name, invType, assetType, wearableType, nextOwnerMask); 607 name, invType, assetType, wearableType, nextOwnerMask);
608 } 608 }
609
610
609 } 611 }
610 } 612 }
611 613
@@ -615,7 +617,7 @@ namespace OpenSim.Region.Environment.Scenes
615 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); 617 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
616 if (userInfo == null) 618 if (userInfo == null)
617 { 619 {
618 m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId); 620 m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId.ToString());
619 return; 621 return;
620 } 622 }
621 623
@@ -639,7 +641,7 @@ namespace OpenSim.Region.Environment.Scenes
639 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); 641 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
640 if (userInfo == null) 642 if (userInfo == null)
641 { 643 {
642 m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId); 644 m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId.ToString());
643 return; 645 return;
644 } 646 }
645 647
@@ -675,7 +677,7 @@ namespace OpenSim.Region.Environment.Scenes
675 /// <param name="remoteClient"></param> 677 /// <param name="remoteClient"></param>
676 /// <param name="primLocalID"></param> 678 /// <param name="primLocalID"></param>
677 public void RequestTaskInventory(IClientAPI remoteClient, uint primLocalID) 679 public void RequestTaskInventory(IClientAPI remoteClient, uint primLocalID)
678 { 680 {
679 SceneObjectGroup group = GetGroupByPrim(primLocalID); 681 SceneObjectGroup group = GetGroupByPrim(primLocalID);
680 if (group != null) 682 if (group != null)
681 { 683 {
@@ -723,7 +725,7 @@ namespace OpenSim.Region.Environment.Scenes
723 localID); 725 localID);
724 } 726 }
725 } 727 }
726 728
727 /// <summary> 729 /// <summary>
728 /// Move the given item in the given prim to a folder in the client's inventory 730 /// Move the given item in the given prim to a folder in the client's inventory
729 /// </summary> 731 /// </summary>
@@ -734,43 +736,43 @@ namespace OpenSim.Region.Environment.Scenes
734 public void MoveTaskInventoryItem(IClientAPI remoteClient, LLUUID folderId, uint primLocalId, LLUUID itemId) 736 public void MoveTaskInventoryItem(IClientAPI remoteClient, LLUUID folderId, uint primLocalId, LLUUID itemId)
735 { 737 {
736 SceneObjectGroup group = GetGroupByPrim(primLocalId); 738 SceneObjectGroup group = GetGroupByPrim(primLocalId);
737 739
738 if (null == group) 740 if (null == group)
739 { 741 {
740 m_log.WarnFormat( 742 m_log.WarnFormat(
741 "[PRIM INVENTORY]: " + 743 "[PRIM INVENTORY]: " +
742 "Move of inventory item {0} from prim with local id {1} failed because the prim could not be found", 744 "Move of inventory item {0} from prim with local id {1} failed because the prim could not be found",
743 itemId, primLocalId); 745 itemId, primLocalId);
744 746
745 return; 747 return;
746 } 748 }
747 749
748 TaskInventoryItem taskItem = group.GetInventoryItem(primLocalId, itemId); 750 TaskInventoryItem taskItem = group.GetInventoryItem(primLocalId, itemId);
749 751
750 if (null == taskItem) 752 if (null == taskItem)
751 { 753 {
752 // Console already notified of error in GetInventoryItem 754 // Console already notified of error in GetInventoryItem
753 return; 755 return;
754 } 756 }
755 757
756// bool permission; 758// bool permission;
757// permission = PermissionsMngr.CanCopyObject(remoteClient.AgentId, 759// permission = PermissionsMngr.CanCopyObject(remoteClient.AgentId,
758// ((SceneObjectGroup) selectedEnt).UUID); 760// ((SceneObjectGroup) selectedEnt).UUID);
759 761
760 // Pending resolving upstream problems with permissions, we just won't allow anybody who is not the owner 762 // Pending resolving upstream problems with permissions, we just won't allow anybody who is not the owner
761 // to copy 763 // to copy
762 if (remoteClient.AgentId != taskItem.OwnerID) 764 if (remoteClient.AgentId != taskItem.OwnerID)
763 { 765 {
764 m_log.InfoFormat( 766 m_log.InfoFormat(
765 "[PRIM INVENTORY]: Attempt made by {0} {1} to copy inventory item {2} {3} in prim {4} {5}," 767 "[PRIM INVENTORY]: Attempt made by {0} {1} to copy inventory item {2} {3} in prim {4} {5},"
766 + " but temporarily not allowed pending upstream bugfixes/feature implementation", 768 + " but temporarily not allowed pending upstream bugfixes/feature implementation",
767 remoteClient.Name, remoteClient.AgentId, taskItem.Name, taskItem.ItemID, group.Name, group.UUID); 769 remoteClient.Name, remoteClient.AgentId, taskItem.Name, taskItem.ItemID, group.Name, group.UUID);
768 770
769 return; 771 return;
770 } 772 }
771 773
772 InventoryItemBase agentItem = new InventoryItemBase(); 774 InventoryItemBase agentItem = new InventoryItemBase();
773 775
774 agentItem.ID = LLUUID.Random(); 776 agentItem.ID = LLUUID.Random();
775 agentItem.Creator = taskItem.CreatorID; 777 agentItem.Creator = taskItem.CreatorID;
776 agentItem.Owner = remoteClient.AgentId; 778 agentItem.Owner = remoteClient.AgentId;
@@ -781,9 +783,8 @@ namespace OpenSim.Region.Environment.Scenes
781 agentItem.InvType = taskItem.InvType; 783 agentItem.InvType = taskItem.InvType;
782 agentItem.Folder = folderId; 784 agentItem.Folder = folderId;
783 agentItem.EveryOnePermissions = taskItem.EveryoneMask; 785 agentItem.EveryOnePermissions = taskItem.EveryoneMask;
784 786
785 if (remoteClient.AgentId != taskItem.OwnerID) 787 if (remoteClient.AgentId != taskItem.OwnerID) {
786 {
787 agentItem.BasePermissions = taskItem.NextOwnerMask; 788 agentItem.BasePermissions = taskItem.NextOwnerMask;
788 agentItem.CurrentPermissions = taskItem.NextOwnerMask; 789 agentItem.CurrentPermissions = taskItem.NextOwnerMask;
789 agentItem.NextPermissions = taskItem.NextOwnerMask; 790 agentItem.NextPermissions = taskItem.NextOwnerMask;
@@ -792,9 +793,9 @@ namespace OpenSim.Region.Environment.Scenes
792 { 793 {
793 agentItem.BasePermissions = taskItem.BaseMask; 794 agentItem.BasePermissions = taskItem.BaseMask;
794 agentItem.CurrentPermissions = taskItem.OwnerMask; 795 agentItem.CurrentPermissions = taskItem.OwnerMask;
795 agentItem.NextPermissions = taskItem.NextOwnerMask; 796 agentItem.NextPermissions = taskItem.NextOwnerMask;
796 } 797 }
797 798
798 AddInventoryItem(remoteClient, agentItem); 799 AddInventoryItem(remoteClient, agentItem);
799 } 800 }
800 801
@@ -833,7 +834,7 @@ namespace OpenSim.Region.Environment.Scenes
833 { 834 {
834 group.AddInventoryItem(remoteClient, primLocalID, item, copyID); 835 group.AddInventoryItem(remoteClient, primLocalID, item, copyID);
835 m_log.InfoFormat( 836 m_log.InfoFormat(
836 "[PRIM INVENTORY]: Update with item {0} requested of prim {1} for {2}", 837 "[PRIM INVENTORY]: Update with item {0} requested of prim {1} for {2}",
837 item.Name, primLocalID, remoteClient.Name); 838 item.Name, primLocalID, remoteClient.Name);
838 group.GetProperties(remoteClient); 839 group.GetProperties(remoteClient);
839 } 840 }
@@ -864,22 +865,22 @@ namespace OpenSim.Region.Environment.Scenes
864 public void RezScript(IClientAPI remoteClient, LLUUID itemID, uint localID) 865 public void RezScript(IClientAPI remoteClient, LLUUID itemID, uint localID)
865 { 866 {
866 LLUUID copyID = LLUUID.Random(); 867 LLUUID copyID = LLUUID.Random();
867 868
868 if (itemID != LLUUID.Zero) 869 if (itemID != LLUUID.Zero)
869 { 870 {
870 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId); 871 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
871 872
872 if (userInfo != null && userInfo.RootFolder != null) 873 if (userInfo != null && userInfo.RootFolder != null)
873 { 874 {
874 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID); 875 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID);
875 876
876 // Try library 877 // Try library
877 // XXX clumsy, possibly should be one call 878 // XXX clumsy, possibly should be one call
878 if (null == item) 879 if (null == item)
879 { 880 {
880 item = CommsManager.UserProfileCacheService.libraryRoot.HasItem(itemID); 881 item = CommsManager.UserProfileCacheService.libraryRoot.HasItem(itemID);
881 } 882 }
882 883
883 if (item != null) 884 if (item != null)
884 { 885 {
885 SceneObjectGroup group = GetGroupByPrim(localID); 886 SceneObjectGroup group = GetGroupByPrim(localID);
@@ -888,10 +889,10 @@ namespace OpenSim.Region.Environment.Scenes
888 group.AddInventoryItem(remoteClient, localID, item, copyID); 889 group.AddInventoryItem(remoteClient, localID, item, copyID);
889 group.StartScript(localID, copyID); 890 group.StartScript(localID, copyID);
890 group.GetProperties(remoteClient); 891 group.GetProperties(remoteClient);
891 892
892 // m_log.InfoFormat("[PRIMINVENTORY]: " + 893 // m_log.InfoFormat("[PRIMINVENTORY]: " +
893 // "Rezzed script {0} into prim local ID {1} for user {2}", 894 // "Rezzed script {0} into prim local ID {1} for user {2}",
894 // item.inventoryName, localID, remoteClient.Name); 895 // item.inventoryName, localID, remoteClient.Name);
895 } 896 }
896 else 897 else
897 { 898 {
@@ -910,7 +911,7 @@ namespace OpenSim.Region.Environment.Scenes
910 } 911 }
911 } 912 }
912 } 913 }
913 else // If the itemID is zero then the script has been rezzed directly in an object's inventory 914 else // If the itemID is zero then the script has been rezzed directly in an object's inventory
914 { 915 {
915 // not yet implemented 916 // not yet implemented
916 // TODO Need to get more details from original RezScript packet 917 // TODO Need to get more details from original RezScript packet
@@ -926,7 +927,7 @@ namespace OpenSim.Region.Environment.Scenes
926 /// <param name="packet"></param> 927 /// <param name="packet"></param>
927 /// <param name="simClient"></param> 928 /// <param name="simClient"></param>
928 public virtual void DeRezObject(Packet packet, IClientAPI remoteClient) 929 public virtual void DeRezObject(Packet packet, IClientAPI remoteClient)
929 { 930 {
930 DeRezObjectPacket DeRezPacket = (DeRezObjectPacket) packet; 931 DeRezObjectPacket DeRezPacket = (DeRezObjectPacket) packet;
931 932
932 if (DeRezPacket.AgentBlock.DestinationID == LLUUID.Zero) 933 if (DeRezPacket.AgentBlock.DestinationID == LLUUID.Zero)
@@ -936,11 +937,11 @@ namespace OpenSim.Region.Environment.Scenes
936 else 937 else
937 { 938 {
938 foreach (DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData) 939 foreach (DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData)
939 { 940 {
940// m_log.DebugFormat( 941// m_log.DebugFormat(
941// "[AGENT INVENTORY]: Received request to derez {0} into folder {1}", 942// "[AGENT INVENTORY]: Received request to derez {0} into folder {1}",
942// Data.ObjectLocalID, DeRezPacket.AgentBlock.DestinationID); 943// Data.ObjectLocalID, DeRezPacket.AgentBlock.DestinationID);
943 944
944 EntityBase selectedEnt = null; 945 EntityBase selectedEnt = null;
945 //m_log.Info("[CLIENT]: LocalID:" + Data.ObjectLocalID.ToString()); 946 //m_log.Info("[CLIENT]: LocalID:" + Data.ObjectLocalID.ToString());
946 947
@@ -958,16 +959,14 @@ namespace OpenSim.Region.Environment.Scenes
958 { 959 {
959 bool permission; 960 bool permission;
960 if (DeRezPacket.AgentBlock.Destination == 1) 961 if (DeRezPacket.AgentBlock.Destination == 1)
961 { 962 { // Take Copy
962 // Take Copy 963 permission = PermissionsMngr.CanCopyObject(remoteClient.AgentId,
963 permission = PermissionsMngr.CanCopyObject(remoteClient.AgentId, 964 ((SceneObjectGroup) selectedEnt).UUID);
964 (selectedEnt).UUID);
965 } 965 }
966 else 966 else
967 { 967 { // Take
968 // Take 968 permission = PermissionsMngr.CanDeRezObject(remoteClient.AgentId,
969 permission = PermissionsMngr.CanDeRezObject(remoteClient.AgentId, 969 ((SceneObjectGroup) selectedEnt).UUID);
970 (selectedEnt).UUID);
971 } 970 }
972 971
973 if (permission) 972 if (permission)
@@ -998,8 +997,7 @@ namespace OpenSim.Region.Environment.Scenes
998 item.InvType = asset.InvType; 997 item.InvType = asset.InvType;
999 item.Folder = DeRezPacket.AgentBlock.DestinationID; 998 item.Folder = DeRezPacket.AgentBlock.DestinationID;
1000 item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask; 999 item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask;
1001 if (remoteClient.AgentId != objectGroup.RootPart.OwnerID) 1000 if (remoteClient.AgentId != objectGroup.RootPart.OwnerID) {
1002 {
1003 item.BasePermissions = objectGroup.RootPart.NextOwnerMask; 1001 item.BasePermissions = objectGroup.RootPart.NextOwnerMask;
1004 item.CurrentPermissions = objectGroup.RootPart.NextOwnerMask; 1002 item.CurrentPermissions = objectGroup.RootPart.NextOwnerMask;
1005 item.NextPermissions = objectGroup.RootPart.NextOwnerMask; 1003 item.NextPermissions = objectGroup.RootPart.NextOwnerMask;
@@ -1027,7 +1025,6 @@ namespace OpenSim.Region.Environment.Scenes
1027 } 1025 }
1028 } 1026 }
1029 } 1027 }
1030
1031 public void updateKnownAsset(IClientAPI remoteClient, SceneObjectGroup grp, LLUUID assetID, LLUUID agentID) 1028 public void updateKnownAsset(IClientAPI remoteClient, SceneObjectGroup grp, LLUUID assetID, LLUUID agentID)
1032 { 1029 {
1033 SceneObjectGroup objectGroup = grp; 1030 SceneObjectGroup objectGroup = grp;
@@ -1047,6 +1044,7 @@ namespace OpenSim.Region.Environment.Scenes
1047 // search through folders to find the asset. 1044 // search through folders to find the asset.
1048 while (searchfolders.Count > 0) 1045 while (searchfolders.Count > 0)
1049 { 1046 {
1047
1050 InventoryFolderImpl fld = searchfolders.Dequeue(); 1048 InventoryFolderImpl fld = searchfolders.Dequeue();
1051 lock (fld) 1049 lock (fld)
1052 { 1050 {
@@ -1071,8 +1069,8 @@ namespace OpenSim.Region.Environment.Scenes
1071 AssetBase asset = CreateAsset( 1069 AssetBase asset = CreateAsset(
1072 objectGroup.GetPartName(objectGroup.LocalId), 1070 objectGroup.GetPartName(objectGroup.LocalId),
1073 objectGroup.GetPartDescription(objectGroup.LocalId), 1071 objectGroup.GetPartDescription(objectGroup.LocalId),
1074 (sbyte) InventoryType.Object, 1072 (sbyte)InventoryType.Object,
1075 (sbyte) AssetType.Object, 1073 (sbyte)AssetType.Object,
1076 Helpers.StringToField(sceneObjectXml)); 1074 Helpers.StringToField(sceneObjectXml));
1077 AssetCache.AddAsset(asset); 1075 AssetCache.AddAsset(asset);
1078 1076
@@ -1088,7 +1086,7 @@ namespace OpenSim.Region.Environment.Scenes
1088 1086
1089 // Sticking it in root folder for now.. objects folder later? 1087 // Sticking it in root folder for now.. objects folder later?
1090 1088
1091 item.Folder = foundFolder; // DeRezPacket.AgentBlock.DestinationID; 1089 item.Folder = foundFolder;// DeRezPacket.AgentBlock.DestinationID;
1092 item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask; 1090 item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask;
1093 if (agentID != objectGroup.RootPart.OwnerID) 1091 if (agentID != objectGroup.RootPart.OwnerID)
1094 { 1092 {
@@ -1110,10 +1108,10 @@ namespace OpenSim.Region.Environment.Scenes
1110 { 1108 {
1111 remoteClient.SendInventoryItemCreateUpdate(item); 1109 remoteClient.SendInventoryItemCreateUpdate(item);
1112 } 1110 }
1111
1113 } 1112 }
1114 } 1113 }
1115 } 1114 }
1116
1117 public LLUUID attachObjectAssetStore(IClientAPI remoteClient, SceneObjectGroup grp, LLUUID AgentId) 1115 public LLUUID attachObjectAssetStore(IClientAPI remoteClient, SceneObjectGroup grp, LLUUID AgentId)
1118 { 1116 {
1119 SceneObjectGroup objectGroup = grp; 1117 SceneObjectGroup objectGroup = grp;
@@ -1128,8 +1126,8 @@ namespace OpenSim.Region.Environment.Scenes
1128 AssetBase asset = CreateAsset( 1126 AssetBase asset = CreateAsset(
1129 objectGroup.GetPartName(objectGroup.LocalId), 1127 objectGroup.GetPartName(objectGroup.LocalId),
1130 objectGroup.GetPartDescription(objectGroup.LocalId), 1128 objectGroup.GetPartDescription(objectGroup.LocalId),
1131 (sbyte) InventoryType.Object, 1129 (sbyte)InventoryType.Object,
1132 (sbyte) AssetType.Object, 1130 (sbyte)AssetType.Object,
1133 Helpers.StringToField(sceneObjectXml)); 1131 Helpers.StringToField(sceneObjectXml));
1134 AssetCache.AddAsset(asset); 1132 AssetCache.AddAsset(asset);
1135 1133
@@ -1142,10 +1140,10 @@ namespace OpenSim.Region.Environment.Scenes
1142 item.Name = asset.Name; 1140 item.Name = asset.Name;
1143 item.AssetType = asset.Type; 1141 item.AssetType = asset.Type;
1144 item.InvType = asset.InvType; 1142 item.InvType = asset.InvType;
1145 1143
1146 // Sticking it in root folder for now.. objects folder later? 1144 // Sticking it in root folder for now.. objects folder later?
1147 1145
1148 item.Folder = userInfo.RootFolder.ID; // DeRezPacket.AgentBlock.DestinationID; 1146 item.Folder = userInfo.RootFolder.ID;// DeRezPacket.AgentBlock.DestinationID;
1149 item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask; 1147 item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask;
1150 if (remoteClient.AgentId != objectGroup.RootPart.OwnerID) 1148 if (remoteClient.AgentId != objectGroup.RootPart.OwnerID)
1151 { 1149 {
@@ -1167,6 +1165,7 @@ namespace OpenSim.Region.Environment.Scenes
1167 return LLUUID.Zero; 1165 return LLUUID.Zero;
1168 } 1166 }
1169 return LLUUID.Zero; 1167 return LLUUID.Zero;
1168
1170 } 1169 }
1171 1170
1172 /// <summary> 1171 /// <summary>
@@ -1188,63 +1187,64 @@ namespace OpenSim.Region.Environment.Scenes
1188 /// <param name="RemoveItem"></param> 1187 /// <param name="RemoveItem"></param>
1189 /// <param name="fromTaskID"></param> 1188 /// <param name="fromTaskID"></param>
1190 public virtual void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 RayEnd, LLVector3 RayStart, 1189 public virtual void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 RayEnd, LLVector3 RayStart,
1191 LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection, 1190 LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
1192 uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags, 1191 uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags,
1193 bool RezSelected, bool RemoveItem, LLUUID fromTaskID) 1192 bool RezSelected, bool RemoveItem, LLUUID fromTaskID)
1194 { 1193 {
1195 SceneObjectGroup sog = RezObject(remoteClient, itemID, RayEnd, RayStart, 1194 SceneObjectGroup sog = RezObject(remoteClient, itemID, RayEnd, RayStart,
1196 RayTargetID, BypassRayCast, RayEndIsIntersection, 1195 RayTargetID, BypassRayCast, RayEndIsIntersection,
1197 EveryoneMask, GroupMask, NextOwnerMask, ItemFlags, 1196 EveryoneMask, GroupMask, NextOwnerMask, ItemFlags,
1198 RezSelected, RemoveItem, fromTaskID, false); 1197 RezSelected, RemoveItem, fromTaskID, false);
1199 } 1198 }
1200 1199
1201 1200
1202 /// <summary> 1201
1203 /// Returns SceneObjectGroup or null from asset request. 1202 /// <summary>
1204 /// </summary> 1203 /// Returns SceneObjectGroup or null from asset request.
1205 /// <param name="remoteClient"></param> 1204 /// </summary>
1206 /// <param name="itemID"></param> 1205 /// <param name="remoteClient"></param>
1207 /// <param name="RayEnd"></param> 1206 /// <param name="itemID"></param>
1208 /// <param name="RayStart"></param> 1207 /// <param name="RayEnd"></param>
1209 /// <param name="RayTargetID"></param> 1208 /// <param name="RayStart"></param>
1210 /// <param name="BypassRayCast"></param> 1209 /// <param name="RayTargetID"></param>
1211 /// <param name="RayEndIsIntersection"></param> 1210 /// <param name="BypassRayCast"></param>
1212 /// <param name="EveryoneMask"></param> 1211 /// <param name="RayEndIsIntersection"></param>
1213 /// <param name="GroupMask"></param> 1212 /// <param name="EveryoneMask"></param>
1214 /// <param name="NextOwnerMask"></param> 1213 /// <param name="GroupMask"></param>
1215 /// <param name="ItemFlags"></param> 1214 /// <param name="NextOwnerMask"></param>
1216 /// <param name="RezSelected"></param> 1215 /// <param name="ItemFlags"></param>
1217 /// <param name="RemoveItem"></param> 1216 /// <param name="RezSelected"></param>
1218 /// <param name="fromTaskID"></param> 1217 /// <param name="RemoveItem"></param>
1219 /// <param name="difference"></param> 1218 /// <param name="fromTaskID"></param>
1220 /// <returns></returns> 1219 /// <param name="difference"></param>
1220 /// <returns></returns>
1221 public virtual SceneObjectGroup RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 RayEnd, LLVector3 RayStart, 1221 public virtual SceneObjectGroup RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 RayEnd, LLVector3 RayStart,
1222 LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection, 1222 LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
1223 uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags, 1223 uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags,
1224 bool RezSelected, bool RemoveItem, LLUUID fromTaskID, bool attachment) 1224 bool RezSelected, bool RemoveItem, LLUUID fromTaskID, bool attachment)
1225 { 1225 {
1226 // Work out position details 1226 // Work out position details
1227 byte bRayEndIsIntersection = 0; 1227 byte bRayEndIsIntersection = (byte)0;
1228 1228
1229 if (RayEndIsIntersection) 1229 if (RayEndIsIntersection)
1230 { 1230 {
1231 bRayEndIsIntersection = 1; 1231 bRayEndIsIntersection = (byte)1;
1232 } 1232 }
1233 else 1233 else
1234 { 1234 {
1235 bRayEndIsIntersection = 0; 1235 bRayEndIsIntersection = (byte)0;
1236 } 1236 }
1237 1237
1238 LLVector3 scale = new LLVector3(0.5f, 0.5f, 0.5f); 1238 LLVector3 scale = new LLVector3(0.5f, 0.5f, 0.5f);
1239 1239
1240 1240
1241 LLVector3 pos = GetNewRezLocation( 1241 LLVector3 pos = GetNewRezLocation(
1242 RayStart, RayEnd, RayTargetID, new LLQuaternion(0, 0, 0, 1), 1242 RayStart, RayEnd, RayTargetID, new LLQuaternion(0, 0, 0, 1),
1243 BypassRayCast, bRayEndIsIntersection, true, scale, false); 1243 BypassRayCast, bRayEndIsIntersection,true,scale, false);
1244 1244
1245 if (!PermissionsMngr.CanRezObject(remoteClient.AgentId, pos) && !attachment) 1245 if (!PermissionsMngr.CanRezObject(remoteClient.AgentId, pos) && !attachment)
1246 { 1246 {
1247 return null; 1247 return null;
1248 } 1248 }
1249 1249
1250 // Rez object 1250 // Rez object
@@ -1260,7 +1260,7 @@ namespace OpenSim.Region.Environment.Scenes
1260 1260
1261 if (rezAsset != null) 1261 if (rezAsset != null)
1262 { 1262 {
1263 string xmlData = Helpers.FieldToUTF8String(rezAsset.Data); 1263 string xmlData = Helpers.FieldToUTF8String(rezAsset.Data);
1264 SceneObjectGroup group = new SceneObjectGroup(this, m_regionHandle, xmlData); 1264 SceneObjectGroup group = new SceneObjectGroup(this, m_regionHandle, xmlData);
1265 group.ResetIDs(); 1265 group.ResetIDs();
1266 AddEntity(group); 1266 AddEntity(group);
@@ -1270,8 +1270,8 @@ namespace OpenSim.Region.Environment.Scenes
1270 if (!attachment) 1270 if (!attachment)
1271 { 1271 {
1272 pos = GetNewRezLocation( 1272 pos = GetNewRezLocation(
1273 RayStart, RayEnd, RayTargetID, new LLQuaternion(0, 0, 0, 1), 1273 RayStart, RayEnd, RayTargetID, new LLQuaternion(0, 0, 0, 1),
1274 BypassRayCast, bRayEndIsIntersection, true, group.GroupScale(), false); 1274 BypassRayCast, bRayEndIsIntersection, true, group.GroupScale(), false);
1275 group.AbsolutePosition = pos; 1275 group.AbsolutePosition = pos;
1276 } 1276 }
1277 else 1277 else
@@ -1280,7 +1280,7 @@ namespace OpenSim.Region.Environment.Scenes
1280 } 1280 }
1281 1281
1282 SceneObjectPart rootPart = group.GetChildPart(group.UUID); 1282 SceneObjectPart rootPart = group.GetChildPart(group.UUID);
1283 1283
1284 // Since renaming the item in the inventory does not affect the name stored 1284 // Since renaming the item in the inventory does not affect the name stored
1285 // in the serialization, transfer the correct name from the inventory to the 1285 // in the serialization, transfer the correct name from the inventory to the
1286 // object itself before we rez. 1286 // object itself before we rez.
@@ -1301,22 +1301,22 @@ namespace OpenSim.Region.Environment.Scenes
1301 part.ChangeInventoryOwner(item.Owner); 1301 part.ChangeInventoryOwner(item.Owner);
1302 } 1302 }
1303 } 1303 }
1304 1304
1305 rootPart.TrimPermissions(); 1305 rootPart.TrimPermissions();
1306 1306
1307 if (!attachment) 1307 if (!attachment)
1308 { 1308 {
1309 if (group.RootPart.Shape.PCode == (byte) PCode.Prim) 1309 if (group.RootPart.Shape.PCode == (byte)PCode.Prim)
1310 { 1310 {
1311 group.ClearPartAttachmentData(); 1311 group.ClearPartAttachmentData();
1312 } 1312 }
1313 group.ApplyPhysics(m_physicalPrim); 1313 group.ApplyPhysics(m_physicalPrim);
1314 } 1314 }
1315 1315
1316 1316
1317 group.StartScripts(); 1317 group.StartScripts();
1318 1318
1319 1319
1320 if (!attachment) 1320 if (!attachment)
1321 rootPart.ScheduleFullUpdate(); 1321 rootPart.ScheduleFullUpdate();
1322 1322
@@ -1327,5 +1327,7 @@ namespace OpenSim.Region.Environment.Scenes
1327 } 1327 }
1328 return null; 1328 return null;
1329 } 1329 }
1330
1331
1330 } 1332 }
1331} \ No newline at end of file 1333}