Vrm10Data.TryParseOrMigrate の API 変更

* 関連する unittest で Dispose
This commit is contained in:
ousttrue
2022-01-26 18:53:09 +09:00
parent 00a046a06c
commit 511aa89dcc
13 changed files with 234 additions and 243 deletions

View File

@@ -43,43 +43,46 @@ namespace UniVRM10
Debug.Log("OnImportAsset to " + scriptedImporter.assetPath);
#endif
if (!Vrm10Data.TryParseOrMigrate(scriptedImporter.assetPath, migrateToVrm1, out Vrm10Data result))
using (var data = Vrm10Data.ParseOrMigrate(scriptedImporter.assetPath, migrateToVrm1, out Vrm10Data result, out MigrationData migration))
{
// fail to parse vrm1
return;
}
//
// Import(create unity objects)
//
var extractedObjects = scriptedImporter.GetExternalObjectMap()
.Where(kv => kv.Value != null)
.ToDictionary(kv => new SubAssetKey(kv.Value.GetType(), kv.Key.name), kv => kv.Value);
var materialGenerator = GetMaterialDescriptorGenerator(renderPipeline);
using (var loader = new Vrm10Importer(result, extractedObjects,
materialGenerator: materialGenerator,
doNormalize: doNormalize))
{
// settings TextureImporters
foreach (var textureInfo in loader.TextureDescriptorGenerator.Get().GetEnumerable())
if (result == null)
{
VRMShaders.TextureImporterConfigurator.Configure(textureInfo, loader.TextureFactory.ExternalTextures);
// fail to parse vrm1
return;
}
var loaded = loader.Load();
loaded.ShowMeshes();
//
// Import(create unity objects)
//
var extractedObjects = scriptedImporter.GetExternalObjectMap()
.Where(kv => kv.Value != null)
.ToDictionary(kv => new SubAssetKey(kv.Value.GetType(), kv.Key.name), kv => kv.Value);
loaded.TransferOwnership((key, o) =>
var materialGenerator = GetMaterialDescriptorGenerator(renderPipeline);
using (var loader = new Vrm10Importer(result, extractedObjects,
materialGenerator: materialGenerator,
doNormalize: doNormalize))
{
context.AddObjectToAsset(key.Name, o);
});
var root = loaded.Root;
GameObject.DestroyImmediate(loaded);
// settings TextureImporters
foreach (var textureInfo in loader.TextureDescriptorGenerator.Get().GetEnumerable())
{
VRMShaders.TextureImporterConfigurator.Configure(textureInfo, loader.TextureFactory.ExternalTextures);
}
context.AddObjectToAsset(root.name, root);
context.SetMainObject(root);
var loaded = loader.Load();
loaded.ShowMeshes();
loaded.TransferOwnership((key, o) =>
{
context.AddObjectToAsset(key.Name, o);
});
var root = loaded.Root;
GameObject.DestroyImmediate(loaded);
context.AddObjectToAsset(root.name, root);
context.SetMainObject(root);
}
}
}
}