From d075b1e52fb4bca241c8fa24ff0350f2efa3b4cb Mon Sep 17 00:00:00 2001
From: "Justin Clark-Casey (justincc)" <jjustincc@googlemail.com>
Date: Sat, 8 Jan 2011 00:19:38 +0000
Subject: [PATCH] Create default skin, shape and hair items in inventory for
 viewer 2

With the addition of eyes, and once all four items are worn, a naked avatar appears.
This is interim code just to get things going.
---
 .../InventoryService/InventoryService.cs      | 33 +++++++++++-----
 .../InventoryService/XInventoryService.cs     | 39 +++++++++++++++++++
 2 files changed, 62 insertions(+), 10 deletions(-)

diff --git a/OpenSim/Services/InventoryService/InventoryService.cs b/OpenSim/Services/InventoryService/InventoryService.cs
index e543337c71..47a290e86f 100644
--- a/OpenSim/Services/InventoryService/InventoryService.cs
+++ b/OpenSim/Services/InventoryService/InventoryService.cs
@@ -506,9 +506,10 @@ namespace OpenSim.Services.InventoryService
         private void AddNewInventorySet(UsersInventory inventory)
         {
             foreach (InventoryFolderBase folder in inventory.Folders.Values)
-            {
                 AddFolder(folder);
-            }
+
+            foreach (InventoryItemBase item in inventory.Items.Values)
+                AddItem(item);
         }
 
         public InventoryItemBase GetInventoryItem(UUID itemID)
@@ -592,14 +593,14 @@ namespace OpenSim.Services.InventoryService
                 folder.Version = 1;
                 Folders.Add(folder.ID, folder);
 
-                folder = new InventoryFolderBase();
-                folder.ParentID = rootFolder;
-                folder.Owner = user;
-                folder.ID = UUID.Random();
-                folder.Name = "Clothing";
-                folder.Type = (short)AssetType.Clothing;
-                folder.Version = 1;
-                Folders.Add(folder.ID, folder);
+                InventoryFolderBase clothingFolder = new InventoryFolderBase();
+                clothingFolder.ParentID = rootFolder;
+                clothingFolder.Owner = user;
+                clothingFolder.ID = UUID.Random();
+                clothingFolder.Name = "Clothing";
+                clothingFolder.Type = (short)AssetType.Clothing;
+                clothingFolder.Version = 1;
+                Folders.Add(clothingFolder.ID, clothingFolder);                                                                               
 
                 folder = new InventoryFolderBase();
                 folder.ParentID = rootFolder;
@@ -690,6 +691,18 @@ namespace OpenSim.Services.InventoryService
                 folder.Type = (short)AssetType.TrashFolder;
                 folder.Version = 1;
                 Folders.Add(folder.ID, folder);
+                
+                // Not worth creating default items for this old inventory service since it's only currently used by
+                // tests (and then to test other things, rather than the service itself).
+//                // Default items
+//                InventoryItemBase defaultShape = new InventoryItemBase();
+//                defaultShape.Name = "Default shape";
+//                defaultShape.AssetType = (int)AssetType.Bodypart;
+//                defaultShape.InvType = (int)InventoryType.Wearable;
+//                defaultShape.ID = AvatarWearable.DEFAULT_BODY_ITEM;
+//                defaultShape.AssetID = AvatarWearable.DEFAULT_BODY_ASSET;
+//                defaultShape.Folder = clothingFolder.ID;
+//                Items.Add(defaultShape.ID, defaultShape);                
             }
         }
     }
diff --git a/OpenSim/Services/InventoryService/XInventoryService.cs b/OpenSim/Services/InventoryService/XInventoryService.cs
index e602412be1..294d296a74 100644
--- a/OpenSim/Services/InventoryService/XInventoryService.cs
+++ b/OpenSim/Services/InventoryService/XInventoryService.cs
@@ -135,6 +135,45 @@ namespace OpenSim.Services.InventoryService
                 CreateFolder(principalID, rootFolder.ID, (int)AssetType.Texture, "Textures");
             if (!Array.Exists(sysFolders, delegate (XInventoryFolder f) { if (f.type == (int)AssetType.TrashFolder) return true; return false; }))
                 CreateFolder(principalID, rootFolder.ID, (int)AssetType.TrashFolder, "Trash");
+            
+            InventoryFolderBase bodypartFolder = GetFolderForType(principalID, AssetType.Bodypart);
+            
+            // Default items
+            InventoryItemBase defaultShape = new InventoryItemBase();
+            defaultShape.Name = "Default shape";
+            defaultShape.Description = "Default shape description";
+            defaultShape.AssetType = (int)AssetType.Bodypart;
+            defaultShape.InvType = (int)InventoryType.Wearable;
+            defaultShape.Flags = (uint)WearableType.Shape;
+            defaultShape.ID = AvatarWearable.DEFAULT_BODY_ITEM;
+            defaultShape.AssetID = AvatarWearable.DEFAULT_BODY_ASSET;
+            defaultShape.Folder = bodypartFolder.ID;
+            defaultShape.CreatorId = UUID.Zero.ToString();
+            AddItem(defaultShape);                        
+            
+            InventoryItemBase defaultSkin = new InventoryItemBase();
+            defaultSkin.Name = "Default skin";
+            defaultSkin.Description = "Default skin description";
+            defaultSkin.AssetType = (int)AssetType.Bodypart;
+            defaultSkin.InvType = (int)InventoryType.Wearable;
+            defaultSkin.Flags = (uint)WearableType.Skin;
+            defaultSkin.ID = AvatarWearable.DEFAULT_SKIN_ITEM;
+            defaultSkin.AssetID = AvatarWearable.DEFAULT_SKIN_ASSET;
+            defaultSkin.Folder = bodypartFolder.ID;
+            defaultSkin.CreatorId = UUID.Zero.ToString();
+            AddItem(defaultSkin);   
+            
+            InventoryItemBase defaultHair = new InventoryItemBase();
+            defaultHair.Name = "Default hair";
+            defaultHair.Description = "Default hair description";
+            defaultHair.AssetType = (int)AssetType.Bodypart;
+            defaultHair.InvType = (int)InventoryType.Wearable;
+            defaultHair.Flags = (uint)WearableType.Hair;
+            defaultHair.ID = AvatarWearable.DEFAULT_HAIR_ITEM;
+            defaultHair.AssetID = AvatarWearable.DEFAULT_HAIR_ASSET;
+            defaultHair.Folder = bodypartFolder.ID;
+            defaultHair.CreatorId = UUID.Zero.ToString();
+            AddItem(defaultHair);            
 
             return result;
         }