From 7ae7aff51dbe9312a849c9b7e4200f4045ba3a9e Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 30 Jun 2021 15:23:46 +0900 Subject: [PATCH 1/4] ScriptedImporterImpl to GltfScriptedImporterBase --- .../ScriptedImporter/GlbScriptedImporter.cs | 9 ++------- .../ScriptedImporter/GltfScriptedImporter.cs | 9 ++------- ...mporterImpl.cs => GltfScriptedImporterBase.cs} | 15 +++++++++++---- ...l.cs.meta => GltfScriptedImporterBase.cs.meta} | 2 +- .../ZipArchivedGltfScriptedImporter.cs | 9 ++------- 5 files changed, 18 insertions(+), 26 deletions(-) rename Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/{ScriptedImporterImpl.cs => GltfScriptedImporterBase.cs} (84%) rename Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/{ScriptedImporterImpl.cs.meta => GltfScriptedImporterBase.cs.meta} (83%) diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporter.cs b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporter.cs index b733d413c..f14ff3e0b 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporter.cs +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporter.cs @@ -1,5 +1,3 @@ -using UnityEngine; -using UnityEditor; #if UNITY_2020_2_OR_NEWER using UnityEditor.AssetImporters; #else @@ -10,14 +8,11 @@ using UnityEditor.Experimental.AssetImporters; namespace UniGLTF { [ScriptedImporter(1, "glb")] - public class GlbScriptedImporter : ScriptedImporter + public class GlbScriptedImporter : GltfScriptedImporterBase { - [SerializeField] - public ScriptedImporterAxes m_reverseAxis; - public override void OnImportAsset(AssetImportContext ctx) { - ScriptedImporterImpl.Import(this, ctx, m_reverseAxis.ToAxes()); + Import(this, ctx, m_reverseAxis.ToAxes()); } } } diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporter.cs b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporter.cs index 0ed062141..2ab443cd6 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporter.cs +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporter.cs @@ -1,5 +1,3 @@ -using UnityEngine; -using UnityEditor; #if UNITY_2020_2_OR_NEWER using UnityEditor.AssetImporters; #else @@ -10,14 +8,11 @@ using UnityEditor.Experimental.AssetImporters; namespace UniGLTF { [ScriptedImporter(1, "gltf")] - public class GltfScriptedImporter : ScriptedImporter + public class GltfScriptedImporter : GltfScriptedImporterBase { - [SerializeField] - public ScriptedImporterAxes m_reverseAxis = default; - public override void OnImportAsset(AssetImportContext ctx) { - ScriptedImporterImpl.Import(this, ctx, m_reverseAxis.ToAxes()); + Import(this, ctx, m_reverseAxis.ToAxes()); } } } diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ScriptedImporterImpl.cs b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterBase.cs similarity index 84% rename from Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ScriptedImporterImpl.cs rename to Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterBase.cs index 26822ac07..cbb75086e 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ScriptedImporterImpl.cs +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterBase.cs @@ -1,5 +1,6 @@ -using System.Linq; using UnityEngine; +using UnityEditor; +using System.Linq; using VRMShaders; #if UNITY_2020_2_OR_NEWER using UnityEditor.AssetImporters; @@ -10,15 +11,21 @@ using UnityEditor.Experimental.AssetImporters; namespace UniGLTF { - public static class ScriptedImporterImpl + /// + /// ScriptedImporterImpl から改め + /// + public abstract class GltfScriptedImporterBase : ScriptedImporter { + [SerializeField] + public ScriptedImporterAxes m_reverseAxis = default; + /// /// glb をパースして、UnityObject化、さらにAsset化する /// /// /// /// - public static void Import(ScriptedImporter scriptedImporter, AssetImportContext context, Axes reverseAxis) + protected static void Import(ScriptedImporter scriptedImporter, AssetImportContext context, Axes reverseAxis) { #if VRM_DEVELOP Debug.Log("OnImportAsset to " + scriptedImporter.assetPath); @@ -28,7 +35,7 @@ namespace UniGLTF // Parse(parse glb, parser gltf json) // var data = new AmbiguousGltfFileParser(scriptedImporter.assetPath).Parse(); - + // // Import(create unity objects) diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ScriptedImporterImpl.cs.meta b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterBase.cs.meta similarity index 83% rename from Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ScriptedImporterImpl.cs.meta rename to Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterBase.cs.meta index 0581f26f1..b583b8078 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ScriptedImporterImpl.cs.meta +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterBase.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 85bf14b48ed135743828ee49a830b1c6 +guid: ae1df0d1926e49f489c74bdf6ca369b5 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporter.cs b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporter.cs index af7819a75..668cbe3a2 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporter.cs +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporter.cs @@ -1,5 +1,3 @@ -using UnityEngine; -using UnityEditor; #if UNITY_2020_2_OR_NEWER using UnityEditor.AssetImporters; #else @@ -12,14 +10,11 @@ namespace UniGLTF #if UNIGLTF_ENABLE_ZIPARCHVIE_IMPORTER [ScriptedImporter(1, "zip")] #endif - public class ZipArchivedGltfScriptedImporter : ScriptedImporter + public class ZipArchivedGltfScriptedImporter : GltfScriptedImporterBase { - [SerializeField] - public ScriptedImporterAxes m_reverseAxis = default; - public override void OnImportAsset(AssetImportContext ctx) { - ScriptedImporterImpl.Import(this, ctx, m_reverseAxis.ToAxes()); + Import(this, ctx, m_reverseAxis.ToAxes()); } } } From 93b6564b0ff5ea76710be64e7483e7cc49f1df32 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 30 Jun 2021 15:25:15 +0900 Subject: [PATCH 2/4] rename EditorGUI to Editor --- ...criptedImporterEditorGUI.cs => GlbScriptedImporterEditor.cs} | 2 +- ...orterEditorGUI.cs.meta => GlbScriptedImporterEditor.cs.meta} | 2 +- ...riptedImporterEditorGUI.cs => GltfScriptedImporterEditor.cs} | 2 +- ...rterEditorGUI.cs.meta => GltfScriptedImporterEditor.cs.meta} | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/{GlbScriptedImporterEditorGUI.cs => GlbScriptedImporterEditor.cs} (96%) rename Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/{GlbScriptedImporterEditorGUI.cs.meta => GlbScriptedImporterEditor.cs.meta} (83%) rename Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/{GltfScriptedImporterEditorGUI.cs => GltfScriptedImporterEditor.cs} (96%) rename Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/{GltfScriptedImporterEditorGUI.cs.meta => GltfScriptedImporterEditor.cs.meta} (83%) diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporterEditorGUI.cs b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporterEditor.cs similarity index 96% rename from Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporterEditorGUI.cs rename to Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporterEditor.cs index 26c49f684..ef2914181 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporterEditorGUI.cs +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporterEditor.cs @@ -14,7 +14,7 @@ using UnityEditor.Experimental.AssetImporters; namespace UniGLTF { [CustomEditor(typeof(GlbScriptedImporter))] - public class GlbScriptedImporterEditorGUI : RemapScriptedImporterEditorBase + public class GlbScriptedImporterEditor : RemapScriptedImporterEditorBase { GlbScriptedImporter m_importer; GltfData m_data; diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporterEditorGUI.cs.meta b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporterEditor.cs.meta similarity index 83% rename from Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporterEditorGUI.cs.meta rename to Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporterEditor.cs.meta index f20742643..d72c33751 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporterEditorGUI.cs.meta +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GlbScriptedImporterEditor.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 706590752e82d004e99da97aff535f67 +guid: 2a09b107e404d4442adbc351d044536f MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterEditorGUI.cs b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterEditor.cs similarity index 96% rename from Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterEditorGUI.cs rename to Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterEditor.cs index 4ff0358c7..a125bbc74 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterEditorGUI.cs +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterEditor.cs @@ -14,7 +14,7 @@ using UnityEditor.Experimental.AssetImporters; namespace UniGLTF { [CustomEditor(typeof(GltfScriptedImporter))] - public class GltfScriptedImporterEditorGUI : RemapScriptedImporterEditorBase + public class GltfScriptedImporterEditor : RemapScriptedImporterEditorBase { GltfScriptedImporter m_importer; GltfData m_data; diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterEditorGUI.cs.meta b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterEditor.cs.meta similarity index 83% rename from Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterEditorGUI.cs.meta rename to Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterEditor.cs.meta index 20e7e95c7..fcfa43bd6 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterEditorGUI.cs.meta +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/GltfScriptedImporterEditor.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 16c69c858a1da5e4088d72a546a2963e +guid: 83c77bd3888dffa439b1feb6986b1b54 MonoImporter: externalObjects: {} serializedVersion: 2 From a8efc2588648905ef230d664f298c0e2ab27b711 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 30 Jun 2021 15:37:27 +0900 Subject: [PATCH 3/4] add ZipArchivedGltfScriptedImporterEditor --- .../ZipArchivedGltfScriptedImporterEditor.cs | 71 +++++++++++++++++++ ...ArchivedGltfScriptedImporterEditor.cs.meta | 11 +++ 2 files changed, 82 insertions(+) create mode 100644 Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporterEditor.cs create mode 100644 Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporterEditor.cs.meta diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporterEditor.cs b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporterEditor.cs new file mode 100644 index 000000000..19070ba77 --- /dev/null +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporterEditor.cs @@ -0,0 +1,71 @@ +using UnityEditor; +using UnityEngine; +using System.IO; +using System.Linq; +#if UNITY_2020_2_OR_NEWER +using UnityEditor.AssetImporters; +#else +using UnityEditor.Experimental.AssetImporters; +#endif + + +namespace UniGLTF +{ + [CustomEditor(typeof(ZipArchivedGltfScriptedImporter))] + public class ZipArchivedGltfScriptedImporterEditor : RemapScriptedImporterEditorBase + { + ZipArchivedGltfScriptedImporter m_importer; + GltfData m_data; + + RemapEditorMaterial m_materialEditor; + RemapEditorAnimation m_animationEditor; + + public override void OnEnable() + { + base.OnEnable(); + + m_importer = target as ZipArchivedGltfScriptedImporter; + m_data = new AmbiguousGltfFileParser(m_importer.assetPath).Parse(); + + var materialGenerator = new GltfMaterialDescriptorGenerator(); + var materialKeys = m_data.GLTF.materials.Select((_, i) => materialGenerator.Get(m_data, i).SubAssetKey); + var textureKeys = new GltfTextureDescriptorGenerator(m_data).Get().GetEnumerable().Select(x => x.SubAssetKey); + m_materialEditor = new RemapEditorMaterial(materialKeys.Concat(textureKeys), GetEditorMap, SetEditorMap); + m_animationEditor = new RemapEditorAnimation(AnimationImporterUtil.EnumerateSubAssetKeys(m_data.GLTF), GetEditorMap, SetEditorMap); + } + + enum Tabs + { + Model, + Animation, + Materials, + } + static Tabs s_currentTab; + + public override void OnInspectorGUI() + { + s_currentTab = MeshUtility.TabBar.OnGUI(s_currentTab); + GUILayout.Space(10); + + switch (s_currentTab) + { + case Tabs.Model: + base.OnInspectorGUI(); + break; + + case Tabs.Animation: + m_animationEditor.OnGUI(m_importer, m_data); + RevertApplyRemapGUI(m_importer); + break; + + case Tabs.Materials: + m_materialEditor.OnGUI(m_importer, m_data, + new GltfTextureDescriptorGenerator(m_data), + assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.Textures", + assetPath => $"{Path.GetFileNameWithoutExtension(assetPath)}.Materials"); + RevertApplyRemapGUI(m_importer); + break; + } + } + } +} diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporterEditor.cs.meta b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporterEditor.cs.meta new file mode 100644 index 000000000..24b311df4 --- /dev/null +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/ZipArchivedGltfScriptedImporterEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d2f9772e8a290e47812172c7fa6f34d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From fc774d2f6beda9ef49666f793d6a648bb9c8bbcb Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 30 Jun 2021 15:39:21 +0900 Subject: [PATCH 4/4] FromFullpath to FromUnityPath MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 間違いが起こりやすい。UnityPath が自分で絶対パス判定した方がいいかも --- .../Editor/UniGLTF/ScriptedImporter/RemapEditorMaterial.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/RemapEditorMaterial.cs b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/RemapEditorMaterial.cs index b94a2bfd6..88bdfdd42 100644 --- a/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/RemapEditorMaterial.cs +++ b/Assets/UniGLTF/Editor/UniGLTF/ScriptedImporter/RemapEditorMaterial.cs @@ -90,7 +90,7 @@ namespace UniGLTF .ToDictionary(kv => kv.Item1, kv => kv.Item2) ; - var assetPath = UnityPath.FromFullpath(self.assetPath); + var assetPath = UnityPath.FromUnityPath(self.assetPath); var dirName = textureDir(assetPath.Value); // $"{assetPath.FileNameWithoutExtension}.Textures"; TextureExtractor.ExtractTextures( data,