From 07ce8f21124de521ebaa512bd208af254c3e84ae Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 16 Jun 2021 18:41:12 +0900 Subject: [PATCH] fix for ImporterContext.Load --- .../Runtime/UniGLTF/RuntimeGltfInstance.cs | 10 ++++----- Assets/UniGLTF/Tests/UniGLTF/TextureTests.cs | 21 ++++++++++++------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/Assets/UniGLTF/Runtime/UniGLTF/RuntimeGltfInstance.cs b/Assets/UniGLTF/Runtime/UniGLTF/RuntimeGltfInstance.cs index 283b3f90a..e052bbb77 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/RuntimeGltfInstance.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/RuntimeGltfInstance.cs @@ -16,14 +16,14 @@ namespace UniGLTF /// public GameObject Root => this.gameObject; - List<(SubAssetKey, UnityEngine.Object)> m_resources = new List<(SubAssetKey, UnityEngine.Object)>(); + public List<(SubAssetKey, UnityEngine.Object)> Resources = new List<(SubAssetKey, UnityEngine.Object)>(); public static RuntimeGltfInstance AttachTo(GameObject go, ImporterContext context) { var loaded = go.AddComponent(); context.TransferOwnership((k, o) => { - loaded.m_resources.Add((k, o)); + loaded.Resources.Add((k, o)); }); return loaded; } @@ -47,7 +47,7 @@ namespace UniGLTF void OnDestroy() { Debug.Log("UnityResourceDestroyer.OnDestroy"); - foreach (var (key, x) in m_resources) + foreach (var (key, x) in Resources) { UnityObjectDestoyer.DestroyRuntimeOrEditor(x); } @@ -55,10 +55,10 @@ namespace UniGLTF public void TransferOwnership(TakeResponsibilityForDestroyObjectFunc take) { - foreach (var (key, x) in m_resources.ToArray()) + foreach (var (key, x) in Resources.ToArray()) { take(key, x); - m_resources.Remove((key, x)); + Resources.Remove((key, x)); } } diff --git a/Assets/UniGLTF/Tests/UniGLTF/TextureTests.cs b/Assets/UniGLTF/Tests/UniGLTF/TextureTests.cs index 0f9d46d04..9e0821ccb 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/TextureTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/TextureTests.cs @@ -91,15 +91,22 @@ namespace UniGLTF parser.ParsePath(path.FullName); // load - var context = new ImporterContext(parser); - context.Load(); + using (var context = new ImporterContext(parser)) + { + var instance = context.Load(); + var textureMap = instance.Resources + .Select(kv => (kv.Item1, kv.Item2 as Texture)) + .Where(kv => kv.Item2 != null) + .ToDictionary(kv => kv.Item1, kv => kv.Item2) + ; - // extractor - var extractor = new TextureExtractor(parser, UnityPath.FromUnityPath(""), context.TextureFactory.ConvertedTextures); - var m = context.TextureDescriptorGenerator.Get().GetEnumerable() - .FirstOrDefault(x => x.SubAssetKey.Name == "texture_1.standard"); + // extractor + var extractor = new TextureExtractor(parser, UnityPath.FromUnityPath(""), textureMap); + var m = context.TextureDescriptorGenerator.Get().GetEnumerable() + .FirstOrDefault(x => x.SubAssetKey.Name == "texture_1.standard"); - Assert.Catch(() => extractor.Extract(m.SubAssetKey, m)); + Assert.Catch(() => extractor.Extract(m.SubAssetKey, m)); + } } } }