mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-09-11 21:38:56 -05:00
構築時に meta と expression が ExternalObjectMap を利用する
This commit is contained in:
@@ -94,7 +94,7 @@ namespace UniVRM10
|
||||
//
|
||||
// Import(create unity objects)
|
||||
//
|
||||
var externalObjectMap = scriptedImporter.GetExternalObjectMap().Select(kv => (kv.Value.name, kv.Value)).ToArray();
|
||||
var externalObjectMap = scriptedImporter.GetExternalObjectMap().ToDictionary(kv => new SubAssetKey(kv.Key.type, kv.Key.name), kv => kv.Value);
|
||||
|
||||
using (var loader = new RuntimeUnityBuilder(parser, externalObjectMap))
|
||||
{
|
||||
|
||||
@@ -18,8 +18,12 @@ namespace UniVRM10
|
||||
|
||||
UniGLTF.Extensions.VRMC_vrm.VRMC_vrm m_vrm;
|
||||
|
||||
public RuntimeUnityBuilder(UniGLTF.GltfParser parser, IEnumerable<(string, UnityEngine.Object)> externalObjectMap = null) : base(parser, externalObjectMap)
|
||||
IDictionary<SubAssetKey, UnityEngine.Object> m_externalMap;
|
||||
|
||||
public RuntimeUnityBuilder(UniGLTF.GltfParser parser, IDictionary<SubAssetKey, UnityEngine.Object> externalObjectMap = null)
|
||||
: base(parser, externalObjectMap.Select(kv => (kv.Key.Name, kv.Value)))
|
||||
{
|
||||
m_externalMap = externalObjectMap;
|
||||
m_model = VrmLoader.CreateVrmModel(parser);
|
||||
|
||||
// for `VRMC_materials_mtoon`
|
||||
@@ -241,7 +245,11 @@ namespace UniVRM10
|
||||
async Task LoadVrmAsync(IAwaitCaller awaitCaller, VRM10Controller controller, UniGLTF.Extensions.VRMC_vrm.VRMC_vrm vrm)
|
||||
{
|
||||
// meta
|
||||
if (vrm.Meta != null)
|
||||
if (m_externalMap.TryGetValue(VRM10MetaObject.SubAssetKey, out UnityEngine.Object meta))
|
||||
{
|
||||
controller.Meta.Meta = meta as VRM10MetaObject;
|
||||
}
|
||||
else if (vrm.Meta != null)
|
||||
{
|
||||
var src = vrm.Meta;
|
||||
m_meta = ScriptableObject.CreateInstance<VRM10MetaObject>();
|
||||
@@ -281,7 +289,11 @@ namespace UniVRM10
|
||||
}
|
||||
|
||||
// expression
|
||||
if (vrm.Expressions != null)
|
||||
if (m_externalMap.TryGetValue(VRM10ExpressionAvatar.SubAssetKey, out UnityEngine.Object expressionAvatar))
|
||||
{
|
||||
controller.Expression.ExpressionAvatar = expressionAvatar as VRM10ExpressionAvatar;
|
||||
}
|
||||
else if (vrm.Expressions != null)
|
||||
{
|
||||
controller.Expression.ExpressionAvatar = ScriptableObject.CreateInstance<VRM10ExpressionAvatar>();
|
||||
|
||||
@@ -573,9 +585,12 @@ namespace UniVRM10
|
||||
m_humanoid = null;
|
||||
}
|
||||
|
||||
if (take(m_meta))
|
||||
if (m_meta != null)
|
||||
{
|
||||
m_meta = null;
|
||||
if (take(m_meta))
|
||||
{
|
||||
m_meta = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_exressionAvatar != null && m_exressionAvatar.Clips != null)
|
||||
|
||||
Reference in New Issue
Block a user