using System.Collections.Generic; using UniGLTF; using UnityEngine; namespace VRM { public class VRMImporterContext : ImporterContext { public VRMImporterContext() { } public VRMImporterContext(string path) { Path = path; } public UniHumanoid.AvatarDescription AvatarDescription; public Avatar HumanoidAvatar; public BlendShapeAvatar BlendShapeAvatar; public VRMMetaObject Meta; public glTF_VRM VRM { get { return (glTF_VRM)GLTF; } } public void ParseVrm(byte[] bytes) { ParseGlb(bytes); } public VRMMetaObject ReadMeta() { var meta=ScriptableObject.CreateInstance(); meta.name = "Meta"; var gltfMeta = VRM.extensions.VRM.meta; meta.Version = gltfMeta.version; meta.Author = gltfMeta.author; meta.ContactInformation = gltfMeta.contactInformation; meta.Reference = gltfMeta.reference; meta.Title = gltfMeta.title; if (gltfMeta.texture >=0 && gltfMeta.texture< Textures.Count) { meta.Thumbnail = Textures[gltfMeta.texture].Texture; } meta.AllowedUser = gltfMeta.allowedUser; meta.ViolentUssage = gltfMeta.violentUssage; meta.SexualUssage = gltfMeta.sexualUssage; meta.CommercialUssage = gltfMeta.commercialUssage; meta.OtherPermissionUrl = gltfMeta.otherPermissionUrl; meta.LicenseType = gltfMeta.licenseType; meta.OtherLicenseUrl = gltfMeta.otherLicenseUrl; return meta; } #if UNITY_EDITOR protected override IEnumerable ObjectsForSubAsset() { foreach (var x in base.ObjectsForSubAsset()) { yield return x; } yield return AvatarDescription; yield return HumanoidAvatar; yield return BlendShapeAvatar; if (BlendShapeAvatar != null && BlendShapeAvatar.Clips != null) { foreach (var x in BlendShapeAvatar.Clips) { yield return x; } } yield return Meta; } #endif } }