コード例 #1
0
        /// <summary>
        /// Updates a variant set using patch semantics. For the definitions of variant sets and other genomics resources, see [Fundamentals of Google Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)
        /// Documentation https://developers.google.com/genomics/v1/reference/variantsets/patch
        /// Generation Note: This does not always build corectly.  Google needs to standardise things I need to figuer out which ones are wrong.
        /// </summary>
        /// <param name="service">Authenticated genomics service.</param>
        /// <param name="variantSetId">The ID of the variant to be updated (must already exist).</param>
        /// <param name="body">A valid genomics v1 body.</param>
        /// <param name="optional">Optional paramaters.</param>        /// <returns>VariantSetResponse</returns>
        public static VariantSet Patch(genomicsService service, string variantSetId, VariantSet body, VariantsetsPatchOptionalParms optional = null)
        {
            try
            {
                // Initial validation.
                if (service == null)
                {
                    throw new ArgumentNullException("service");
                }
                if (body == null)
                {
                    throw new ArgumentNullException("body");
                }
                if (variantSetId == null)
                {
                    throw new ArgumentNullException(variantSetId);
                }

                // Building the initial request.
                var request = service.Variantsets.Patch(body, variantSetId);

                // Applying optional parameters to the request.
                request = (VariantsetsResource.PatchRequest)SampleHelpers.ApplyOptionalParms(request, optional);

                // Requesting data.
                return(request.Execute());
            }
            catch (Exception ex)
            {
                throw new Exception("Request Variantsets.Patch failed.", ex);
            }
        }
コード例 #2
0
    private static void MapViewToRelativePath(Type viewType, string relativePath, string guid,
                                              VariantSet assetVariants, VariantSet allVariants, Manifest manifest)
    {
        var viewVariants = GetVariantsFromType(viewType, allVariants);
        var variants     = viewVariants.UnionWith(assetVariants);
        var uri          = GetUriFromRelativePath(relativePath, manifest.UriPrefix);

        var mapping = new ViewToPrefabMapping(viewType, uri, guid, variants);

        manifest.ViewsToPrefabs.Add(mapping);
    }
コード例 #3
0
        /// <summary>
        /// Returns a clone of this object, with extra variants.
        /// </summary>
        public static Options With(this Options This, VariantSet variants)
        {
            if (variants.Count == 0)
            {
                return(This);
            }

            var clone = Options.Clone(This);

            clone.Variants = This?.Variants.UnionWith(variants) ?? variants;
            return(clone);
        }
コード例 #4
0
    private static VariantSet GetVariantsFromRelativePath(string relativePath, Manifest manifest,
                                                          VariantSet allVariants)
    {
        var allTokens = relativePath
                        .Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);

        var variantNames = allTokens
                           .Take(allTokens.Length - 1)
                           .Select(x => x.ToLower())
                           .ToList();

        return(GetVariantsFromNames(variantNames, allVariants));
    }
コード例 #5
0
    private static void MapModelToViewModel(Manifest manifest, Type modelType, Type viewModelType,
                                            VariantSet allVariants)
    {
        if (modelType == null)
        {
            return;
        }

        var variants = GetVariantsFromTypes(modelType, viewModelType, allVariants);
        var mapping  = new TypeToTypeMapping(modelType, viewModelType, variants);

        manifest.ModelsToViewModels.Add(mapping);
    }
コード例 #6
0
    private static VariantSet GetVariantsFromType(Type type, VariantSet allVariants)
    {
        var attributes = type
                         .GetAttributes <VariantAttribute>()
                         .Select(x => x.Variant)
                         .ToList();

        if (!attributes.Any())
        {
            return(new VariantSet());
        }

        return(allVariants
               .Where(variant => attributes.Contains(variant.Name))
               .ToVariantSet());
    }
コード例 #7
0
        public static void VerifyVariantSet(String mediaType, VariantSet thisV, bool recurse)
        {
            Assert.IsNotNull(thisV);

            Uri      aboutURI    = thisV.GetAbout();
            DateTime?createdDate = thisV.GetCreated();

            Variant[] variants         = thisV.GetVariants();
            String    identifierString = thisV.GetIdentifier();
            String    titleString      = thisV.GetTitle();

            Uri[] rdfTypesURIs       = thisV.GetRdfTypes();
            Uri   serviceProviderURI = thisV.GetServiceProvider();

            Assert.IsNotNull(aboutURI);
            Assert.IsNotNull(createdDate);
            Assert.IsNotNull(variants);
            Assert.IsNotNull(titleString);
            Assert.IsNotNull(rdfTypesURIs);
            Assert.IsNotNull(serviceProviderURI);

            Assert.IsTrue(aboutURI.ToString().EndsWith(identifierString));
            Assert.IsTrue(rdfTypesURIs.Contains(new Uri(OSLC_ARVIDA.Constants.Scene.TYPE_SCENE_VARIANT_SET)));

            if (recurse)
            {
                OslcRestClient aboutOSLCRestClient = new OslcRestClient(FORMATTERS,
                                                                        aboutURI,
                                                                        mediaType);

                VerifyVariantSet(mediaType,
                                 aboutOSLCRestClient.GetOslcResource <VariantSet>(),
                                 false);

                OslcRestClient serviceProviderOSLCRestClient = new OslcRestClient(FORMATTERS,
                                                                                  serviceProviderURI,
                                                                                  mediaType);

                ServiceProvider serviceProvider = serviceProviderOSLCRestClient.GetOslcResource <ServiceProvider>();

                Assert.IsNotNull(serviceProvider);
            }
        }
コード例 #8
0
        /// <summary>
        /// Creates a new variant set. For the definitions of variant sets and other genomics resources, see [Fundamentals of Google Genomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics) The provided variant set must have a valid `datasetId` set - all other fields are optional. Note that the `id` field will be ignored, as this is assigned by the server.
        /// Documentation https://developers.google.com/genomics/v1/reference/variantsets/create
        /// Generation Note: This does not always build corectly.  Google needs to standardise things I need to figuer out which ones are wrong.
        /// </summary>
        /// <param name="service">Authenticated genomics service.</param>
        /// <param name="body">A valid genomics v1 body.</param>
        /// <returns>VariantSetResponse</returns>
        public static VariantSet Create(genomicsService service, VariantSet body)
        {
            try
            {
                // Initial validation.
                if (service == null)
                {
                    throw new ArgumentNullException("service");
                }
                if (body == null)
                {
                    throw new ArgumentNullException("body");
                }

                // Make the request.
                return(service.Variantsets.Create(body).Execute());
            }
            catch (Exception ex)
            {
                throw new Exception("Request Variantsets.Create failed.", ex);
            }
        }
コード例 #9
0
    private static void MapViewsToPrefabWithGuid(string guid, Manifest manifest, VariantSet allVariants)
    {
        string prefabPath = AssetDatabase.GUIDToAssetPath(guid);

        var relativePath = GetRelativePrefabPath(prefabPath, manifest.PrefabsPath);

        var asset = AssetDatabase.LoadAssetAtPath <GameObject>(prefabPath);
        var views = asset.GetComponents <IView>().ToList();

        if (!views.Any())
        {
            Debug.LogWarning($"Skipping non-view prefab: {prefabPath}");
            return;
        }

        var assetVariants = GetVariantsFromRelativePath(relativePath, manifest, allVariants);

        foreach (var view in views)
        {
            MapViewToRelativePath(view.GetType(), relativePath, guid, assetVariants, allVariants, manifest);
        }
    }
コード例 #10
0
        /// <summary>
        /// Gets the full IMC information for a given item
        /// </summary>
        /// <param name="item"></param>
        /// <param name="modelInfo"></param>
        /// <returns>The ImcData data</returns>
        public async Task <ImcData> GetFullImcInfo(IItemModel item, XivModelInfo modelInfo)
        {
            var index = new Index(_gameDirectory);
            var dat   = new Dat(_gameDirectory);

            var itemType = ItemType.GetItemType(item);
            var imcPath  = GetImcPath(modelInfo, itemType);

            var imcOffset = await index.GetDataOffset(HashGenerator.GetHash(imcPath.Folder), HashGenerator.GetHash(imcPath.File), _dataFile);

            if (imcOffset == 0)
            {
                throw new Exception($"Could not find offset for {imcPath.Folder}/{imcPath.File}");
            }

            var imcByteData = await dat.GetType2Data(imcOffset, _dataFile);

            return(await Task.Run(() =>
            {
                using (var br = new BinaryReader(new MemoryStream(imcByteData)))
                {
                    var imcData = new ImcData()
                    {
                        VariantCount = br.ReadInt16(),
                        Unknown = br.ReadInt16(),
                        GearVariantList = new List <VariantSet>()
                    };

                    //weapons and monsters do not have variant sets
                    if (itemType == XivItemType.weapon || itemType == XivItemType.monster)
                    {
                        imcData.OtherVariantList = new List <XivImc>();

                        imcData.DefaultVariant = new XivImc
                        {
                            Version = br.ReadUInt16(),
                            Mask = br.ReadUInt16(),
                            Vfx = br.ReadUInt16()
                        };

                        for (var i = 0; i < imcData.VariantCount; i++)
                        {
                            imcData.OtherVariantList.Add(new XivImc
                            {
                                Version = br.ReadUInt16(), Mask = br.ReadUInt16(), Vfx = br.ReadUInt16()
                            });
                        }
                    }
                    else
                    {
                        imcData.GearVariantList = new List <VariantSet>();

                        imcData.DefaultVariantSet = new VariantSet
                        {
                            Slot1 = new XivImc
                            {
                                Version = br.ReadUInt16(), Mask = br.ReadUInt16(), Vfx = br.ReadUInt16()
                            },
                            Slot2 = new XivImc
                            {
                                Version = br.ReadUInt16(), Mask = br.ReadUInt16(), Vfx = br.ReadUInt16()
                            },
                            Slot3 = new XivImc
                            {
                                Version = br.ReadUInt16(), Mask = br.ReadUInt16(), Vfx = br.ReadUInt16()
                            },
                            Slot4 = new XivImc
                            {
                                Version = br.ReadUInt16(), Mask = br.ReadUInt16(), Vfx = br.ReadUInt16()
                            },
                            Slot5 = new XivImc
                            {
                                Version = br.ReadUInt16(), Mask = br.ReadUInt16(), Vfx = br.ReadUInt16()
                            },
                        };

                        for (var i = 0; i < imcData.VariantCount; i++)
                        {
                            // gets the data for each slot in the current variant set
                            var imcGear = new VariantSet
                            {
                                Slot1 = new XivImc
                                {
                                    Version = br.ReadUInt16(), Mask = br.ReadUInt16(), Vfx = br.ReadUInt16()
                                },
                                Slot2 = new XivImc
                                {
                                    Version = br.ReadUInt16(), Mask = br.ReadUInt16(), Vfx = br.ReadUInt16()
                                },
                                Slot3 = new XivImc
                                {
                                    Version = br.ReadUInt16(), Mask = br.ReadUInt16(), Vfx = br.ReadUInt16()
                                },
                                Slot4 = new XivImc
                                {
                                    Version = br.ReadUInt16(), Mask = br.ReadUInt16(), Vfx = br.ReadUInt16()
                                },
                                Slot5 = new XivImc
                                {
                                    Version = br.ReadUInt16(), Mask = br.ReadUInt16(), Vfx = br.ReadUInt16()
                                },
                            };

                            imcData.GearVariantList.Add(imcGear);
                        }
                    }

                    return imcData;
                }
            }));
        }
コード例 #11
0
 private TypeToUriMapping CreateMapping <T>(Uri prefabUri, VariantSet explicitVariants = null) =>
 new TypeToUriMapping(typeof(T), prefabUri, explicitVariants ?? Empty);
コード例 #12
0
 private TypeToTypeMapping CreateMapping <T, U>(VariantSet explicitVariants = null, VariantSet implicitVariants = null) =>
 new TypeToTypeMapping(typeof(T), typeof(U), explicitVariants ?? Empty)
 {
     ImplicitVariants = implicitVariants ?? Empty
 };
コード例 #13
0
 private static VariantSet GetVariantsFromTypes(Type type1, Type type2, VariantSet allVariants)
 {
     return(GetVariantsFromType(type1, allVariants)
            .UnionWith(GetVariantsFromType(type2, allVariants)));
 }
コード例 #14
0
 private static VariantSet GetVariantsFromNames(List <string> names, VariantSet allVariants)
 {
     return(allVariants
            .Where(x => names.Contains(x.Name.ToLower()))
            .ToVariantSet());
 }
コード例 #15
0
 private ViewToPrefabMapping CreateMapping <T>(Uri prefabUri, VariantSet explicitVariants = null) =>
 new ViewToPrefabMapping(typeof(T), prefabUri, null, explicitVariants ?? Empty);
コード例 #16
0
    private static void MapViewModelToView(Manifest manifest, Type viewModelType, Type viewType, VariantSet allVariants)
    {
        var variants = GetVariantsFromTypes(viewModelType, viewType, allVariants);
        var mapping  = new TypeToTypeMapping(viewModelType, viewType, variants);

        manifest.ViewModelsToViews.Add(mapping);
    }
コード例 #17
0
 public VariantsPresenterDecorator(IPresenter presenter, VariantSet variants) : base(presenter)
 {
     _variants = variants;
 }