public List <WearableItem> GetWearableItems()
    {
        if (wearables == null || wearables.Count == 0)
        {
            return(null);
        }

        List <WearableItem> result = new List <WearableItem>();

        foreach (var wearableData in wearables)
        {
            // Populate new WearableItem with fetched data
            WearableItem wearable = new WearableItem()
            {
                id          = wearableData.id,
                baseUrl     = WEARABLES_CONTENT_BASE_URL,
                thumbnail   = wearableData.thumbnail,
                rarity      = wearableData.rarity,
                description = wearableData.description,
                i18n        = wearableData.i18n,
                data        = new WearableItem.Data()
                {
                    category = wearableData.data.category,
                    tags     = wearableData.data.tags
                }
            };

            List <WearableItem.Representation> wearableRepresentations = new List <WearableItem.Representation>();
            foreach (var wearableDataRepresentation in wearableData.data.representations)
            {
                WearableItem.Representation wearableRepresentation = new WearableItem.Representation()
                {
                    bodyShapes       = wearableDataRepresentation.bodyShapes,
                    overrideHides    = wearableDataRepresentation.overrideHides,
                    overrideReplaces = wearableDataRepresentation.overrideReplaces,
                    mainFile         = wearableDataRepresentation.mainFile
                };

                List <WearableItem.MappingPair> contentMappingPairs = new List <WearableItem.MappingPair>();
                foreach (var content in wearableDataRepresentation.contents)
                {
                    contentMappingPairs.Add(new WearableItem.MappingPair()
                    {
                        key  = content.key,
                        hash = content.url.Substring(content.url.LastIndexOf("/") + 1)
                    });
                }

                wearableRepresentation.contents = contentMappingPairs.ToArray();
                wearableRepresentations.Add(wearableRepresentation);
            }

            wearable.data.representations = wearableRepresentations.ToArray();
            result.Add(wearable);
        }

        return(result);
    }
예제 #2
0
            public List <WearableItem> GetWearableItemsList()
            {
                if (deployments == null || deployments.Count == 0)
                {
                    return(null);
                }

                List <WearableItem> result = new List <WearableItem>();

                foreach (var wearableData in deployments)
                {
                    // Populate new WearableItem with fetched data
                    WearableItem wearable = new WearableItem()
                    {
                        id          = wearableData.metadata.id,
                        category    = wearableData.metadata.data.category,
                        tags        = wearableData.metadata.data.tags,
                        baseUrl     = WEARABLES_CONTENT_BASE_URL,
                        thumbnail   = wearableData.metadata.thumbnail,
                        hides       = wearableData.metadata.data.hides,
                        replaces    = wearableData.metadata.data.replaces,
                        rarity      = wearableData.metadata.rarity,
                        description = wearableData.metadata.description,
                        i18n        = wearableData.metadata.i18n
                    };

                    List <WearableItem.Representation> wearableRepresentations = new List <WearableItem.Representation>();
                    foreach (var wearableDataRepresentation in wearableData.metadata.data.representations)
                    {
                        WearableItem.Representation wearableRepresentation = new WearableItem.Representation()
                        {
                            bodyShapes       = wearableDataRepresentation.bodyShapes,
                            overrideHides    = wearableDataRepresentation.overrideHides,
                            overrideReplaces = wearableDataRepresentation.overrideReplaces,
                            mainFile         = wearableDataRepresentation.mainFile
                        };

                        List <ContentServerUtils.MappingPair> contentMappingPairs = new List <ContentServerUtils.MappingPair>();
                        foreach (var contentFileName in wearableDataRepresentation.contents)
                        {
                            var contentData = wearableData.content.FirstOrDefault((x) => x.key == contentFileName);

                            if (contentData == null)
                            {
                                log.Error($"Missing related content mapping pair info from fetched Wearable {wearableData.metadata.id}");
                                continue;
                            }

                            contentMappingPairs.Add(new ContentServerUtils.MappingPair()
                            {
                                file = contentData.key,
                                hash = contentData.hash
                            });
                        }

                        wearableRepresentation.contents = contentMappingPairs.ToArray();
                        wearableRepresentations.Add(wearableRepresentation);
                    }

                    wearable.representations = wearableRepresentations.ToArray();
                    result.Add(wearable);
                }

                return(result);
            }