/// <summary> /// Load MaterialBase from materials folder. /// </summary> /// <param name="file">File name.</param> /// <returns>MaterialBase.</returns> internal static MaterialBase LoadMaterialWrapper(string file) { var material = LoadMaterial(file); var wrapper = new MaterialWrapperBuilder().Build(material); Assert.NotNull(wrapper); return(wrapper); }
/// <summary> /// Converts materials for ToonLit. /// </summary> /// <param name="materials">Materials to convert.</param> /// <param name="assetsDirectory">Root directory for converted avatar.</param> /// <returns>Converted materials (key: original material).</returns> internal Dictionary <Material, Material> ConvertMaterialsForToonLit(Material[] materials, string assetsDirectory) { var saveDirectory = $"{assetsDirectory}/Materials"; Directory.CreateDirectory(saveDirectory); AssetDatabase.Refresh(); var materialsToConvert = materials.Where(m => !VRCSDKUtility.IsMaterialAllowedForQuestAvatar(m)).ToArray(); var convertedMaterials = new Dictionary <Material, Material>(); for (int i = 0; i < materialsToConvert.Length; i++) { var m = materialsToConvert[i]; AssetDatabase.TryGetGUIDAndLocalFileIdentifier(m, out string guid, out long localId); var material = new MaterialWrapperBuilder().Build(m); var toonlit = material.ConvertToToonLit(); AssetDatabase.CreateAsset(toonlit, $"{saveDirectory}/{m.name}_from_{guid}.mat"); convertedMaterials.Add(m, toonlit); } return(convertedMaterials); }
/// <summary> /// Initializes a new instance of the <see cref="AvatarConverter"/> class. /// </summary> /// <param name="materialWrapperBuilder">MaterialWrapperBuilder to use.</param> internal AvatarConverter(MaterialWrapperBuilder materialWrapperBuilder) { MaterialWrapperBuilder = materialWrapperBuilder; }