public override void OnEnable() { base.OnEnable(); var importer = target as VrmScriptedImporter; m_importer = importer; using (var data = new GlbFileParser(m_importer.assetPath).Parse()) { m_result = Vrm10Data.Parse(data); if (m_result != null) { OnData(); } else { using (var migrated = Vrm10Data.Migrate(data, out m_result, out m_migration)) { if (m_result != null) { OnData(); } } } } }
private static async Task <Vrm10Instance> TryLoadingAsVrm10Async( GltfData gltfData, bool normalizeTransform, bool showMeshes, IAwaitCaller awaitCaller, IMaterialDescriptorGenerator materialGenerator, VrmMetaInformationCallback vrmMetaInformationCallback, CancellationToken ct) { ct.ThrowIfCancellationRequested(); if (awaitCaller == null) { throw new ArgumentNullException(); } var vrm10Data = await awaitCaller.Run(() => Vrm10Data.Parse(gltfData)); ct.ThrowIfCancellationRequested(); if (vrm10Data == null) { // NOTE: Failed to parse as VRM 1.0. return(null); } return(await LoadVrm10DataAsync( vrm10Data, null, normalizeTransform, showMeshes, awaitCaller, materialGenerator, vrmMetaInformationCallback, ct)); }
/// <summary> /// /// </summary> /// <param name="scriptedImporter"></param> /// <param name="context"></param> /// <param name="doMigrate">vrm0 だった場合に vrm1 化する</param> /// <param name="renderPipeline"></param> /// <param name="doNormalize">normalize する</param> public static void Import(ScriptedImporter scriptedImporter, AssetImportContext context, bool doMigrate, RenderPipelineTypes renderPipeline, bool doNormalize) { #if VRM_DEVELOP Debug.Log("OnImportAsset to " + scriptedImporter.assetPath); #endif // 1st parse as vrm1 using (var data = new GlbFileParser(scriptedImporter.assetPath).Parse()) { var vrm1Data = Vrm10Data.Parse(data); if (vrm1Data != null) { // successfully parsed vrm-1.0 Process(vrm1Data, scriptedImporter, context, renderPipeline, doNormalize); } if (!doMigrate) { return; } // try migration... MigrationData migration; using (var migrated = Vrm10Data.Migrate(data, out vrm1Data, out migration)) { if (vrm1Data != null) { Process(vrm1Data, scriptedImporter, context, renderPipeline, doNormalize); } } // fail to migrate... if (migration != null) { Debug.LogWarning(migration.Message); } return; } }