vrm0 の時だけ migration checkbox

This commit is contained in:
ousttrue
2021-06-22 15:12:41 +09:00
parent e0a9fc1e9e
commit 13c445f882
7 changed files with 75 additions and 61 deletions

View File

@@ -4,8 +4,6 @@ using UniGLTF;
using System.IO;
using UniGLTF.MeshUtility;
using System.Linq;
using VRMShaders;
using System.Collections.Generic;
#if UNITY_2020_2_OR_NEWER
using UnityEditor.AssetImporters;
#else
@@ -19,38 +17,32 @@ namespace UniVRM10
public class VrmScriptedImporterEditorGUI : RemapScriptedImporterEditorBase
{
VrmScriptedImporter m_importer;
GltfParser m_parser;
VrmLib.Model m_model;
UniGLTF.Extensions.VRMC_vrm.VRMC_vrm m_vrm;
RemapEditorMaterial m_materialEditor;
RemapEditorVrm m_vrmEditor;
string m_message;
Vrm10Parser.Result m_result;
public override void OnEnable()
{
base.OnEnable();
m_importer = target as VrmScriptedImporter;
m_parser = default;
m_message = default;
if (!Vrm10Parser.TryParseOrMigrate(m_importer.assetPath, m_importer.MigrateToVrm1, out Vrm10Parser.Result result, out m_message))
if (!Vrm10Parser.TryParseOrMigrate(m_importer.assetPath, m_importer.MigrateToVrm1, out m_result))
{
// error
return;
}
m_vrm = result.Vrm;
m_parser = result.Parser;
m_model = ModelReader.Read(result.Parser);
m_model = ModelReader.Read(m_result.Parser);
var tmp = m_importer.GetExternalObjectMap();
var generator = new Vrm10MaterialDescriptorGenerator();
var materialKeys = m_parser.GLTF.materials.Select((x, i) => generator.Get(m_parser, i).SubAssetKey);
var textureKeys = new GltfTextureDescriptorGenerator(m_parser).Get().GetEnumerable().Select(x => x.SubAssetKey);
var materialKeys = m_result.Parser.GLTF.materials.Select((x, i) => generator.Get(m_result.Parser, i).SubAssetKey);
var textureKeys = new GltfTextureDescriptorGenerator(m_result.Parser).Get().GetEnumerable().Select(x => x.SubAssetKey);
m_materialEditor = new RemapEditorMaterial(materialKeys.Concat(textureKeys), GetEditorMap, SetEditorMap);
var expressionSubAssetKeys = m_vrm.Expressions.Select(x => ExpressionKey.CreateFromVrm10(x).SubAssetKey);
var expressionSubAssetKeys = m_result.Vrm.Expressions.Select(x => ExpressionKey.CreateFromVrm10(x).SubAssetKey);
m_vrmEditor = new RemapEditorVrm(new[] { VRM10Object.SubAssetKey }.Concat(expressionSubAssetKeys), GetEditorMap, SetEditorMap);
}
@@ -64,24 +56,35 @@ namespace UniVRM10
public override void OnInspectorGUI()
{
if (!string.IsNullOrEmpty(m_message))
{
EditorGUILayout.HelpBox(m_message, MessageType.Error);
}
s_currentTab = TabBar.OnGUI(s_currentTab);
GUILayout.Space(10);
switch (s_currentTab)
{
case Tabs.Model:
base.OnInspectorGUI();
{
switch (m_result.FileType)
{
case Vrm10FileType.Vrm1:
EditorGUILayout.HelpBox(m_result.Message, MessageType.Info);
break;
case Vrm10FileType.Vrm0:
EditorGUILayout.HelpBox(m_result.Message, m_model != null ? MessageType.Info : MessageType.Warning);
// migration check boxs
base.OnInspectorGUI();
break;
default:
break;
}
}
break;
case Tabs.Materials:
if (m_parser != null && m_vrm != null)
if (m_result.Parser != null && m_result.Vrm != null)
{
m_materialEditor.OnGUI(m_importer, m_parser, new Vrm10TextureDescriptorGenerator(m_parser),
m_materialEditor.OnGUI(m_importer, m_result.Parser, new Vrm10TextureDescriptorGenerator(m_result.Parser),
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.vrm1.Textures",
assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.vrm1.Materials");
RevertApplyRemapGUI(m_importer);
@@ -89,9 +92,9 @@ namespace UniVRM10
break;
case Tabs.Vrm:
if (m_parser != null && m_vrm != null)
if (m_result.Parser != null && m_result.Vrm != null)
{
m_vrmEditor.OnGUI(m_importer, m_parser, m_vrm);
m_vrmEditor.OnGUI(m_importer, m_result.Parser, m_result.Vrm);
RevertApplyRemapGUI(m_importer);
}
break;