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