UniVRM/Scripts/Format/VRMImporterContext.cs
2018-04-22 17:20:03 +09:00

90 lines
2.5 KiB
C#

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<glTF_VRM>(bytes);
}
public VRMMetaObject ReadMeta()
{
var meta=ScriptableObject.CreateInstance<VRMMetaObject>();
meta.name = "Meta";
meta.ExporterVersion = VRM.extensions.VRM.exporterVersion;
var gltfMeta = VRM.extensions.VRM.meta;
meta.Version = gltfMeta.version; // model 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<Object> 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
}
}