From e423e3be800b3325fd69fd63693cf90b99e7177d Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 23 Mar 2021 13:39:20 +0900 Subject: [PATCH 1/2] Add GltfTextureEnumerator.Enumerate unique test --- Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs b/Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs index 2f60da547..7f10c96f8 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using NUnit.Framework; using UnityEngine; @@ -53,7 +54,7 @@ namespace UniGLTF } } - static void Load(FileInfo gltf, DirectoryInfo root) + static void RuntimeLoad(FileInfo gltf, int subStrStart) { var parser = new GltfParser(); try @@ -75,10 +76,38 @@ namespace UniGLTF } catch (Exception ex) { - Message(gltf.FullName.Substring(root.FullName.Length), ex); + Message(gltf.FullName.Substring(subStrStart), ex); } } + /// + /// Extract をテスト + /// + /// + /// + static void EditorLoad(FileInfo gltf, int subStrStart) + { + var parser = new GltfParser(); + try + { + parser.ParsePath(gltf.FullName); + } + catch (Exception ex) + { + Debug.LogError($"ParseError: {gltf}"); + Debug.LogException(ex); + } + + // should unique + var gltfTextures = GltfTextureEnumerator.Enumerate(parser.GLTF); + var distinct = gltfTextures.Distinct().ToArray(); + if (!gltfTextures.SequenceEqual(distinct)) + { + var a = 0; + } + Assert.True(gltfTextures.SequenceEqual(distinct)); + } + [Test] public void GltfSampleModelsTests() { @@ -95,7 +124,9 @@ namespace UniGLTF foreach (var gltf in EnumerateGltfFiles(root)) { - Load(gltf, root); + RuntimeLoad(gltf, root.FullName.Length); + + EditorLoad(gltf, root.FullName.Length); } } } From 50d5539f8d11dc29a3fb27e35bcdec1a9b109d07 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 23 Mar 2021 13:46:11 +0900 Subject: [PATCH 2/2] GltfTextureEnumerator.Enumerate uniqueness --- .../Runtime/UniGLTF/IO/MaterialIO/GltfTextureEnumerator.cs | 5 ++++- Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs | 4 ---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfTextureEnumerator.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfTextureEnumerator.cs index 074816122..15147905b 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfTextureEnumerator.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfTextureEnumerator.cs @@ -52,11 +52,14 @@ namespace UniGLTF public static IEnumerable Enumerate(glTF gltf) { + var used = new HashSet(); foreach (var material in gltf.materials) { foreach (var textureInfo in EnumerateTextures(gltf, material)) { - yield return textureInfo; + if(used.Add(textureInfo)){ + yield return textureInfo; + } } } } diff --git a/Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs b/Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs index 7f10c96f8..e27914c53 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs @@ -101,10 +101,6 @@ namespace UniGLTF // should unique var gltfTextures = GltfTextureEnumerator.Enumerate(parser.GLTF); var distinct = gltfTextures.Distinct().ToArray(); - if (!gltfTextures.SequenceEqual(distinct)) - { - var a = 0; - } Assert.True(gltfTextures.SequenceEqual(distinct)); }