From 5f4badf9e2cd96f4a4a48b0019bd5f39298213ab Mon Sep 17 00:00:00 2001
From: Melanie
Date: Fri, 29 Oct 2010 20:48:37 +0200
Subject: Add my work on top of cmickeyb's

---
 OpenSim/Framework/AvatarAppearance.cs              | 100 ++++++++++++++++++++-
 bin/assets/TexturesAssetSet/TexturesAssetSet.xml   |   6 ++
 .../BodyPartsLibrary/BodyPartsLibraryItems.xml     |  28 ++++++
 3 files changed, 133 insertions(+), 1 deletion(-)

diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs
index 55646dd..4738d88 100644
--- a/OpenSim/Framework/AvatarAppearance.cs
+++ b/OpenSim/Framework/AvatarAppearance.cs
@@ -35,6 +35,104 @@ using log4net;
 
 namespace OpenSim.Framework
 {
+    // A special dictionary for avatar appearance
+    public struct LayerItem
+    {
+        public UUID ItemID;
+        public UUID AssetID;
+
+        public LayerItem(UUID itemID, UUID assetID)
+        {
+            ItemID = itemID;
+            AssetID = assetID;
+        }
+    }
+
+    public class Layer
+    {
+        protected int m_layerType;
+        protected Dictionary<UUID, UUID> m_items = new Dictionary<UUID, UUID>();
+        protected List<UUID> m_ids = new List<UUID>();
+
+        public Layer(int type)
+        {
+            m_layerType = type;
+        }
+
+        public int LayerType
+        {
+            get { return m_layerType; }
+        }
+
+        public int Count
+        {
+            get { return m_ids.Count; }
+        }
+
+        public void Add(UUID itemID, UUID assetID)
+        {
+            if (m_items.ContainsKey(itemID))
+                return;
+            if (m_ids.Count >= 5)
+                return;
+
+            m_ids.Add(itemID);
+            m_items[itemID] = assetID;
+        }
+
+        public void Wear(UUID itemID, UUID assetID)
+        {
+            Clear();
+            Add(itemID, assetID);
+        }
+
+        public void Clear()
+        {
+            m_ids.Clear();
+            m_items.Clear();
+        }
+
+        public void RemoveItem(UUID itemID)
+        {
+            if (m_items.ContainsKey(itemID))
+            {
+                m_ids.Remove(itemID);
+                m_items.Remove(itemID);
+            }
+        }
+
+        public void RemoveAsset(UUID assetID)
+        {
+            UUID itemID = UUID.Zero;
+
+            foreach (KeyValuePair<UUID, UUID> kvp in m_items)
+            {
+                if (kvp.Value == assetID)
+                {
+                    itemID = kvp.Key;
+                    break;
+                }
+            }
+
+            if (itemID != UUID.Zero)
+            {
+                m_ids.Remove(itemID);
+                m_items.Remove(itemID);
+            }
+        }
+
+        public LayerItem this [int idx]
+        {
+            get
+            {
+                if (idx >= m_ids.Count || idx < 0)
+                    return new LayerItem(UUID.Zero, UUID.Zero);
+
+                return new LayerItem(m_ids[idx], m_items[m_ids[idx]]);
+            }
+        }
+    }
+
     /// <summary>
     /// Contains the Avatar's Appearance and methods to manipulate the appearance.
     /// </summary>
@@ -1456,4 +1554,4 @@ namespace OpenSim.Framework
             SKIRT_SKIRT_BLUE = 217
         }
     }
-}
\ No newline at end of file
+}
diff --git a/bin/assets/TexturesAssetSet/TexturesAssetSet.xml b/bin/assets/TexturesAssetSet/TexturesAssetSet.xml
index c5cafa7..7c74a48 100644
--- a/bin/assets/TexturesAssetSet/TexturesAssetSet.xml
+++ b/bin/assets/TexturesAssetSet/TexturesAssetSet.xml
@@ -1,4 +1,10 @@
 <Nini>
+  <Section Name="Default Alpha">
+    <Key Name="assetID" Value="1578a2b1-5179-4b53-b618-fe00ca5a5594" />
+    <Key Name="name" Value="alpha" />
+    <Key Name="assetType" Value="0" />
+    <Key Name="fileName" Value="defaultalpha.jp2" />
+  </Section>
   <Section Name="texture1">
     <Key Name="assetID" Value="00000000-0000-2222-3333-000000000099" />
     <Key Name="name" Value="femface" />
diff --git a/bin/inventory/BodyPartsLibrary/BodyPartsLibraryItems.xml b/bin/inventory/BodyPartsLibrary/BodyPartsLibraryItems.xml
index aa8d9d9..5cb71c0 100644
--- a/bin/inventory/BodyPartsLibrary/BodyPartsLibraryItems.xml
+++ b/bin/inventory/BodyPartsLibrary/BodyPartsLibraryItems.xml
@@ -16,6 +16,34 @@
   </Section>
 --> 
 <!--
+  <Section Name="Tattoo">
+    <Key Name="inventoryID" Value="c47e22bd-3021-4ba4-82aa-2b5cb34d35e1" />
+    <Key Name="assetID" Value="00000000-0000-2222-3333-100000001007" />
+    <Key Name="folderID" Value="d499e5e0-b9bf-11dc-95ff-0800200c9a66"/>
+    <Key Name="description" Value="Tattoo" />
+    <Key Name="name" Value="Tattoo" />
+    <Key Name="assetType" Value="13" />
+    <Key Name="inventoryType" Value="18" />
+    <Key Name="currentPermissions" Value="2147483647" />
+    <Key Name="nextPermissions" Value="2147483647" />
+    <Key Name="everyonePermissions" Value="2147483647" />
+    <Key Name="basePermissions" Value="2147483647" />
+  </Section>
+  
+  <Section Name="Alpha">
+    <Key Name="inventoryID" Value="bfb9923c-4838-4d2d-bf07-608c5b1165c8" />
+    <Key Name="assetID" Value="1578a2b1-5179-4b53-b618-fe00ca5a5594" />
+    <Key Name="folderID" Value="d499e5e0-b9bf-11dc-95ff-0800200c9a66"/>
+    <Key Name="description" Value="Hair" />
+    <Key Name="name" Value="Hair" />
+    <Key Name="assetType" Value="13" />
+    <Key Name="inventoryType" Value="18" />
+    <Key Name="currentPermissions" Value="2147483647" />
+    <Key Name="nextPermissions" Value="2147483647" />
+    <Key Name="everyonePermissions" Value="2147483647" />
+    <Key Name="basePermissions" Value="2147483647" />
+  </Section>
+  
   <Section Name="Hair">
     <Key Name="inventoryID" Value="d342e6c1-b9d2-11dc-95ff-0800200c9a66" />
     <Key Name="assetID" Value="d342e6c0-b9d2-11dc-95ff-0800200c9a66" />
-- 
cgit v1.1