Exemplo n.º 1
0
        private void SetAppearanceAssets(CachedUserInfo profile, ref List<AvatarWearable> wearables, IClientAPI clientView)
        {
            foreach (AvatarWearable wearable in wearables)
            {
                // Skip it if its empty
                if (wearable.ItemID == UUID.Zero)
                    continue;

                // Ignore ruth's assets
                if (((wearable.WearableType == AvatarWearable.BODY) && (wearable.ItemID == AvatarWearable.DEFAULT_BODY_ITEM)) ||
                    ((wearable.WearableType == AvatarWearable.SKIN) && (wearable.ItemID == AvatarWearable.DEFAULT_SKIN_ITEM)) ||
                    ((wearable.WearableType == AvatarWearable.HAIR) && (wearable.ItemID == AvatarWearable.DEFAULT_HAIR_ITEM)) ||
                    ((wearable.WearableType == AvatarWearable.EYES) && (wearable.ItemID == AvatarWearable.DEFAULT_EYES_ITEM)) ||
                    ((wearable.WearableType == AvatarWearable.SHIRT) && (wearable.ItemID == AvatarWearable.DEFAULT_SHIRT_ITEM)) ||
                    ((wearable.WearableType == AvatarWearable.PANTS) && (wearable.ItemID == AvatarWearable.DEFAULT_PANTS_ITEM)))
                {
                    continue;
                }

                // Otherwise look up the asset and store the translated value
                // XXX dont look up stuff we already know about.. save a trip to the asset server

                InventoryItemBase baseItem = profile.FindItem(wearable.ItemID);
                baseItem = profile.ResolveLink(baseItem);
                

                if (baseItem != null)
                {
                    wearable.AssetID = baseItem.AssetID;
                }
                else
                {
                    m_log.ErrorFormat("[APPEARANCE]: Can't find inventory item {0}", wearable.ItemID);
                }
            }
        }