aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/UserAccountService/UserAccountService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Services/UserAccountService/UserAccountService.cs')
-rw-r--r--OpenSim/Services/UserAccountService/UserAccountService.cs43
1 files changed, 42 insertions, 1 deletions
diff --git a/OpenSim/Services/UserAccountService/UserAccountService.cs b/OpenSim/Services/UserAccountService/UserAccountService.cs
index f6b003a..a22754f 100644
--- a/OpenSim/Services/UserAccountService/UserAccountService.cs
+++ b/OpenSim/Services/UserAccountService/UserAccountService.cs
@@ -640,9 +640,11 @@ namespace OpenSim.Services.UserAccountService
640 m_log.DebugFormat("[USER ACCOUNT SERVICE]: Creating default appearance items for {0}", principalID); 640 m_log.DebugFormat("[USER ACCOUNT SERVICE]: Creating default appearance items for {0}", principalID);
641 641
642 InventoryFolderBase bodyPartsFolder = m_InventoryService.GetFolderForType(principalID, FolderType.BodyPart); 642 InventoryFolderBase bodyPartsFolder = m_InventoryService.GetFolderForType(principalID, FolderType.BodyPart);
643 // Get Current Outfit folder
644 InventoryFolderBase currentOutfitFolder = m_InventoryService.GetFolderForType(principalID, FolderType.CurrentOutfit);
643 645
644 InventoryItemBase eyes = new InventoryItemBase(UUID.Random(), principalID); 646 InventoryItemBase eyes = new InventoryItemBase(UUID.Random(), principalID);
645 eyes.AssetID = new UUID("4bb6fa4d-1cd2-498a-a84c-95c1a0e745a7"); 647 eyes.AssetID = AvatarWearable.DEFAULT_EYES_ASSET;
646 eyes.Name = "Default Eyes"; 648 eyes.Name = "Default Eyes";
647 eyes.CreatorId = principalID.ToString(); 649 eyes.CreatorId = principalID.ToString();
648 eyes.AssetType = (int)AssetType.Bodypart; 650 eyes.AssetType = (int)AssetType.Bodypart;
@@ -655,6 +657,7 @@ namespace OpenSim.Services.UserAccountService
655 eyes.NextPermissions = (uint)PermissionMask.All; 657 eyes.NextPermissions = (uint)PermissionMask.All;
656 eyes.Flags = (uint)WearableType.Eyes; 658 eyes.Flags = (uint)WearableType.Eyes;
657 m_InventoryService.AddItem(eyes); 659 m_InventoryService.AddItem(eyes);
660 CreateCurrentOutfitLink((int)InventoryType.Wearable, (uint)WearableType.Eyes, eyes.Name, eyes.ID, principalID, currentOutfitFolder.ID);
658 661
659 InventoryItemBase shape = new InventoryItemBase(UUID.Random(), principalID); 662 InventoryItemBase shape = new InventoryItemBase(UUID.Random(), principalID);
660 shape.AssetID = AvatarWearable.DEFAULT_BODY_ASSET; 663 shape.AssetID = AvatarWearable.DEFAULT_BODY_ASSET;
@@ -670,6 +673,7 @@ namespace OpenSim.Services.UserAccountService
670 shape.NextPermissions = (uint)PermissionMask.All; 673 shape.NextPermissions = (uint)PermissionMask.All;
671 shape.Flags = (uint)WearableType.Shape; 674 shape.Flags = (uint)WearableType.Shape;
672 m_InventoryService.AddItem(shape); 675 m_InventoryService.AddItem(shape);
676 CreateCurrentOutfitLink((int)InventoryType.Wearable, (uint)WearableType.Shape, shape.Name, shape.ID, principalID, currentOutfitFolder.ID);
673 677
674 InventoryItemBase skin = new InventoryItemBase(UUID.Random(), principalID); 678 InventoryItemBase skin = new InventoryItemBase(UUID.Random(), principalID);
675 skin.AssetID = AvatarWearable.DEFAULT_SKIN_ASSET; 679 skin.AssetID = AvatarWearable.DEFAULT_SKIN_ASSET;
@@ -685,6 +689,7 @@ namespace OpenSim.Services.UserAccountService
685 skin.NextPermissions = (uint)PermissionMask.All; 689 skin.NextPermissions = (uint)PermissionMask.All;
686 skin.Flags = (uint)WearableType.Skin; 690 skin.Flags = (uint)WearableType.Skin;
687 m_InventoryService.AddItem(skin); 691 m_InventoryService.AddItem(skin);
692 CreateCurrentOutfitLink((int)InventoryType.Wearable, (uint)WearableType.Skin, skin.Name, skin.ID, principalID, currentOutfitFolder.ID);
688 693
689 InventoryItemBase hair = new InventoryItemBase(UUID.Random(), principalID); 694 InventoryItemBase hair = new InventoryItemBase(UUID.Random(), principalID);
690 hair.AssetID = AvatarWearable.DEFAULT_HAIR_ASSET; 695 hair.AssetID = AvatarWearable.DEFAULT_HAIR_ASSET;
@@ -700,6 +705,7 @@ namespace OpenSim.Services.UserAccountService
700 hair.NextPermissions = (uint)PermissionMask.All; 705 hair.NextPermissions = (uint)PermissionMask.All;
701 hair.Flags = (uint)WearableType.Hair; 706 hair.Flags = (uint)WearableType.Hair;
702 m_InventoryService.AddItem(hair); 707 m_InventoryService.AddItem(hair);
708 CreateCurrentOutfitLink((int)InventoryType.Wearable, (uint)WearableType.Hair, hair.Name, hair.ID, principalID, currentOutfitFolder.ID);
703 709
704 InventoryFolderBase clothingFolder = m_InventoryService.GetFolderForType(principalID, FolderType.Clothing); 710 InventoryFolderBase clothingFolder = m_InventoryService.GetFolderForType(principalID, FolderType.Clothing);
705 711
@@ -717,6 +723,7 @@ namespace OpenSim.Services.UserAccountService
717 shirt.NextPermissions = (uint)PermissionMask.All; 723 shirt.NextPermissions = (uint)PermissionMask.All;
718 shirt.Flags = (uint)WearableType.Shirt; 724 shirt.Flags = (uint)WearableType.Shirt;
719 m_InventoryService.AddItem(shirt); 725 m_InventoryService.AddItem(shirt);
726 CreateCurrentOutfitLink((int)InventoryType.Wearable, (uint)WearableType.Shirt, shirt.Name, shirt.ID, principalID, currentOutfitFolder.ID);
720 727
721 InventoryItemBase pants = new InventoryItemBase(UUID.Random(), principalID); 728 InventoryItemBase pants = new InventoryItemBase(UUID.Random(), principalID);
722 pants.AssetID = AvatarWearable.DEFAULT_PANTS_ASSET; 729 pants.AssetID = AvatarWearable.DEFAULT_PANTS_ASSET;
@@ -732,6 +739,7 @@ namespace OpenSim.Services.UserAccountService
732 pants.NextPermissions = (uint)PermissionMask.All; 739 pants.NextPermissions = (uint)PermissionMask.All;
733 pants.Flags = (uint)WearableType.Pants; 740 pants.Flags = (uint)WearableType.Pants;
734 m_InventoryService.AddItem(pants); 741 m_InventoryService.AddItem(pants);
742 CreateCurrentOutfitLink((int)InventoryType.Wearable, (uint)WearableType.Pants, pants.Name, pants.ID, principalID, currentOutfitFolder.ID);
735 743
736 if (m_AvatarService != null) 744 if (m_AvatarService != null)
737 { 745 {
@@ -815,6 +823,8 @@ namespace OpenSim.Services.UserAccountService
815 { 823 {
816 // Get Clothing folder of receiver 824 // Get Clothing folder of receiver
817 InventoryFolderBase destinationFolder = m_InventoryService.GetFolderForType(destination, FolderType.Clothing); 825 InventoryFolderBase destinationFolder = m_InventoryService.GetFolderForType(destination, FolderType.Clothing);
826 // Get Current Outfit folder
827 InventoryFolderBase currentOutfitFolder = m_InventoryService.GetFolderForType(destination, FolderType.CurrentOutfit);
818 828
819 if (destinationFolder == null) 829 if (destinationFolder == null)
820 throw new Exception("Cannot locate folder(s)"); 830 throw new Exception("Cannot locate folder(s)");
@@ -841,6 +851,7 @@ namespace OpenSim.Services.UserAccountService
841 for (int i = 0; i < wearables.Length; i++) 851 for (int i = 0; i < wearables.Length; i++)
842 { 852 {
843 wearable = wearables[i]; 853 wearable = wearables[i];
854 m_log.DebugFormat("[XXX]: Getting item {0} from avie {1}", wearable[0].ItemID, source);
844 if (wearable[0].ItemID != UUID.Zero) 855 if (wearable[0].ItemID != UUID.Zero)
845 { 856 {
846 // Get inventory item and copy it 857 // Get inventory item and copy it
@@ -878,6 +889,9 @@ namespace OpenSim.Services.UserAccountService
878 AvatarWearable newWearable = new AvatarWearable(); 889 AvatarWearable newWearable = new AvatarWearable();
879 newWearable.Wear(destinationItem.ID, wearable[0].AssetID); 890 newWearable.Wear(destinationItem.ID, wearable[0].AssetID);
880 avatarAppearance.SetWearable(i, newWearable); 891 avatarAppearance.SetWearable(i, newWearable);
892
893 // Add to Current Outfit
894 CreateCurrentOutfitLink((int)InventoryType.Wearable, item.Flags, item.Name, destinationItem.ID, destination, currentOutfitFolder.ID);
881 } 895 }
882 else 896 else
883 { 897 {
@@ -930,6 +944,9 @@ namespace OpenSim.Services.UserAccountService
930 // Attach item 944 // Attach item
931 avatarAppearance.SetAttachment(attachpoint, destinationItem.ID, destinationItem.AssetID); 945 avatarAppearance.SetAttachment(attachpoint, destinationItem.ID, destinationItem.AssetID);
932 m_log.DebugFormat("[USER ACCOUNT SERVICE]: Attached {0}", destinationItem.ID); 946 m_log.DebugFormat("[USER ACCOUNT SERVICE]: Attached {0}", destinationItem.ID);
947
948 // Add to Current Outfit
949 CreateCurrentOutfitLink(destinationItem.InvType, item.Flags, item.Name, destinationItem.ID, destination, currentOutfitFolder.ID);
933 } 950 }
934 else 951 else
935 { 952 {
@@ -939,6 +956,30 @@ namespace OpenSim.Services.UserAccountService
939 } 956 }
940 } 957 }
941 958
959 protected void CreateCurrentOutfitLink(int invType, uint itemType, string name, UUID itemID, UUID userID, UUID currentOutfitFolderUUID)
960 {
961 UUID LinkInvItem = UUID.Random();
962 InventoryItemBase itembase = new InventoryItemBase(LinkInvItem, userID)
963 {
964 AssetID = itemID,
965 AssetType = (int)AssetType.Link,
966 CreatorId = userID.ToString(),
967 InvType = invType,
968 Description = "",
969 //Folder = m_InventoryService.GetFolderForType(userID, FolderType.CurrentOutfit).ID,
970 Folder = currentOutfitFolderUUID,
971 Flags = itemType,
972 Name = name,
973 BasePermissions = (uint)PermissionMask.Copy,
974 CurrentPermissions = (uint)PermissionMask.Copy,
975 EveryOnePermissions = (uint)PermissionMask.Copy,
976 GroupPermissions = (uint)PermissionMask.Copy,
977 NextPermissions = (uint)PermissionMask.Copy
978 };
979
980 m_InventoryService.AddItem(itembase);
981 }
982
942 /// <summary> 983 /// <summary>
943 /// Apply next owner permissions. 984 /// Apply next owner permissions.
944 /// </summary> 985 /// </summary>