mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-09-15 07:21:01 -05:00
vrm0 の時だけ migration checkbox
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user