diff --git a/Assets/UniGLTF/Tests/UniGLTF/EditorTextureSerializerTests.cs b/Assets/UniGLTF/Tests/UniGLTF/EditorTextureSerializerTests.cs index 6580dbe54..349db71fd 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/EditorTextureSerializerTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/EditorTextureSerializerTests.cs @@ -143,16 +143,17 @@ namespace UniGLTF UnityEngine.Object.DestroyImmediate(mat); UnityEngine.Object.DestroyImmediate(root); - var parsed = GltfData.CreateFromGltfDataForTest(gltf, data.BinBytes); + using (var parsed = GltfData.CreateFromGltfDataForTest(gltf, data.BinBytes)) + { + // Extract Image to Texture2D + var exportedBytes = parsed.GetBytesFromBufferView(exportedImage.bufferView).ToArray(); + var exportedTexture = new Texture2D(2, 2, TextureFormat.ARGB32, mipChain: false, linear: false); + Assert.IsTrue(exportedTexture.LoadImage(exportedBytes)); // Always true ? + Assert.AreEqual(srcTex.width, exportedTexture.width); + Assert.AreEqual(srcTex.height, exportedTexture.height); - // Extract Image to Texture2D - var exportedBytes = parsed.GetBytesFromBufferView(exportedImage.bufferView).ToArray(); - var exportedTexture = new Texture2D(2, 2, TextureFormat.ARGB32, mipChain: false, linear: false); - Assert.IsTrue(exportedTexture.LoadImage(exportedBytes)); // Always true ? - Assert.AreEqual(srcTex.width, exportedTexture.width); - Assert.AreEqual(srcTex.height, exportedTexture.height); - - return exportedTexture; + return exportedTexture; + } } private static Color32 GetFirstPixelInTexture2D(Texture2D tex) diff --git a/Assets/UniGLTF/Tests/UniGLTF/GlbParserTests.cs b/Assets/UniGLTF/Tests/UniGLTF/GlbParserTests.cs index 9c36ec786..22034d331 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/GlbParserTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/GlbParserTests.cs @@ -33,11 +33,13 @@ namespace UniGLTF }); var parser = new GlbLowLevelParser("Test", data.ToGlbBytes()); - var parsed = parser.Parse(); + using (var parsed = parser.Parse()) + { - Assert.AreEqual("FooBar", parsed.GLTF.textures[0].name); - // NOTE: 大文字小文字が違うだけの名前は、同一としてみなされ、Suffix が付く。 - Assert.AreEqual("foobar__UNIGLTF__DUPLICATED__2", parsed.GLTF.textures[1].name); + Assert.AreEqual("FooBar", parsed.GLTF.textures[0].name); + // NOTE: 大文字小文字が違うだけの名前は、同一としてみなされ、Suffix が付く。 + Assert.AreEqual("foobar__UNIGLTF__DUPLICATED__2", parsed.GLTF.textures[1].name); + } } /// @@ -61,16 +63,18 @@ namespace UniGLTF Assert.True(File.Exists(path)); var bytes = File.ReadAllBytes(path); - var data = new GlbBinaryParser(bytes, Path.GetFileNameWithoutExtension(path)).Parse(); - - // glb header + 1st chunk only - var mod = bytes.Take(12 + 8 + data.Chunks[0].Bytes.Count).ToArray(); - - Assert.Throws(() => + using (var data = new GlbBinaryParser(bytes, Path.GetFileNameWithoutExtension(path)).Parse()) { + + // glb header + 1st chunk only + var mod = bytes.Take(12 + 8 + data.Chunks[0].Bytes.Count).ToArray(); + + Assert.Throws(() => + { // 再パース var data2 = new GlbBinaryParser(mod, Path.GetFileNameWithoutExtension(path)).Parse(); - }); + }); + } } } } diff --git a/Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs b/Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs index b37167c06..3684281d1 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/GltfLoadTests.cs @@ -89,6 +89,7 @@ namespace UniGLTF Debug.LogException(ex); } + using (data) using (var loader = new ImporterContext(data)) { try @@ -136,12 +137,15 @@ namespace UniGLTF } // should unique - var gltfTextures = new GltfTextureDescriptorGenerator(data).Get().GetEnumerable() - .Select(x => x.SubAssetKey) - .ToArray(); - var distinct = gltfTextures.Distinct().ToArray(); - Assert.True(gltfTextures.Length == distinct.Length); - Assert.True(gltfTextures.SequenceEqual(distinct)); + using (data) + { + var gltfTextures = new GltfTextureDescriptorGenerator(data).Get().GetEnumerable() + .Select(x => x.SubAssetKey) + .ToArray(); + var distinct = gltfTextures.Distinct().ToArray(); + Assert.True(gltfTextures.Length == distinct.Length); + Assert.True(gltfTextures.SequenceEqual(distinct)); + } } static bool Exclude(FileInfo f) @@ -220,13 +224,14 @@ namespace UniGLTF { var path = Path.Combine(root.FullName, "DamagedHelmet/glTF-Binary/DamagedHelmet.glb"); - var data = new AutoGltfFileParser(path).Parse(); - - var matDesc = new GltfMaterialDescriptorGenerator().Get(data, 0); - Assert.AreEqual("Standard", matDesc.ShaderName); - Assert.AreEqual(5, matDesc.TextureSlots.Count); - var (key, value) = matDesc.EnumerateSubAssetKeyValue().First(); - Assert.AreEqual(new SubAssetKey(typeof(Texture2D), "texture_0"), key); + using (var data = new AutoGltfFileParser(path).Parse()) + { + var matDesc = new GltfMaterialDescriptorGenerator().Get(data, 0); + Assert.AreEqual("Standard", matDesc.ShaderName); + Assert.AreEqual(5, matDesc.TextureSlots.Count); + var (key, value) = matDesc.EnumerateSubAssetKeyValue().First(); + Assert.AreEqual(new SubAssetKey(typeof(Texture2D), "texture_0"), key); + } } } } diff --git a/Assets/VRM/Tests/VRMLoadTests.cs b/Assets/VRM/Tests/VRMLoadTests.cs index 63da4b822..ef2ac3042 100644 --- a/Assets/VRM/Tests/VRMLoadTests.cs +++ b/Assets/VRM/Tests/VRMLoadTests.cs @@ -72,6 +72,7 @@ namespace VRM try { + using (data) using (var importer = new VRMImporterContext(new VRMData(data))) { return importer.Load().gameObject; diff --git a/Assets/VRM/Tests/VRMLookAtTests.cs b/Assets/VRM/Tests/VRMLookAtTests.cs index d262120c7..95c197326 100644 --- a/Assets/VRM/Tests/VRMLookAtTests.cs +++ b/Assets/VRM/Tests/VRMLookAtTests.cs @@ -22,6 +22,7 @@ namespace VRM { var data = new GlbFileParser(AliciaPath).Parse(); byte[] bytes = default; + using (data) using (var loader = new VRMImporterContext(new VRMData(data))) using (var loaded = loader.Load()) { @@ -37,7 +38,7 @@ namespace VRM }); } - var data2 = new GlbLowLevelParser(AliciaPath, bytes).Parse(); + using (var data2 = new GlbLowLevelParser(AliciaPath, bytes).Parse()) using (var loader2 = new VRMImporterContext(new VRMData(data2))) { Assert.AreEqual(LookAtType.BlendShape, loader2.VRM.firstPerson.lookAtType); @@ -50,6 +51,7 @@ namespace VRM var data = new GlbFileParser(AliciaPath).Parse(); byte[] bytes = default; CurveMapper horizontalInner = default; + using (data) using (var loader = new VRMImporterContext(new VRMData(data))) using (var loaded = loader.Load()) { @@ -65,7 +67,7 @@ namespace VRM }); } - var data2 = new GlbLowLevelParser(AliciaPath, bytes).Parse(); + using (var data2 = new GlbLowLevelParser(AliciaPath, bytes).Parse()) using (var loader = new VRMImporterContext(new VRMData(data2))) using (var loaded = loader.Load()) { @@ -83,6 +85,7 @@ namespace VRM var data = new GlbFileParser(AliciaPath).Parse(); byte[] bytes = default; CurveMapper horizontalInner = default; + using (data) using (var loader = new VRMImporterContext(new VRMData(data))) using (var loaded = loader.Load()) { @@ -98,7 +101,7 @@ namespace VRM }); } - var data2 = new GlbLowLevelParser(AliciaPath, bytes).Parse(); + using (var data2 = new GlbLowLevelParser(AliciaPath, bytes).Parse()) using (var loader = new VRMImporterContext(new VRMData(data2))) using (var loaded = loader.Load()) { diff --git a/Assets/VRM10/Tests/MaterialImportTests.cs b/Assets/VRM10/Tests/MaterialImportTests.cs index cbe82ce0b..c4961c776 100644 --- a/Assets/VRM10/Tests/MaterialImportTests.cs +++ b/Assets/VRM10/Tests/MaterialImportTests.cs @@ -22,22 +22,24 @@ namespace UniVRM10 public void MaterialImporterTest() { var migratedBytes = MigrationVrm.Migrate(File.ReadAllBytes(AliciaPath)); - var data = new GlbLowLevelParser(AliciaPath, migratedBytes).Parse(); + using (var data = new GlbLowLevelParser(AliciaPath, migratedBytes).Parse()) + { - var matDesc = new Vrm10MaterialDescriptorGenerator().Get(data, 0); - Assert.AreEqual("Alicia_body", matDesc.Name); - Assert.AreEqual("VRM10/MToon10", matDesc.ShaderName); - Assert.AreEqual("Alicia_body", matDesc.TextureSlots["_MainTex"].UnityObjectName); - Assert.AreEqual("Alicia_body", matDesc.TextureSlots["_ShadeTex"].UnityObjectName); + var matDesc = new Vrm10MaterialDescriptorGenerator().Get(data, 0); + Assert.AreEqual("Alicia_body", matDesc.Name); + Assert.AreEqual("VRM10/MToon10", matDesc.ShaderName); + Assert.AreEqual("Alicia_body", matDesc.TextureSlots["_MainTex"].UnityObjectName); + Assert.AreEqual("Alicia_body", matDesc.TextureSlots["_ShadeTex"].UnityObjectName); - AreColorEqualApproximately(new Color(1, 1, 1, 1), matDesc.Colors["_Color"]); - ColorUtility.TryParseHtmlString("#FFDDD6", out var shadeColor); - AreColorEqualApproximately(shadeColor, matDesc.Colors["_ShadeColor"]); + AreColorEqualApproximately(new Color(1, 1, 1, 1), matDesc.Colors["_Color"]); + ColorUtility.TryParseHtmlString("#FFDDD6", out var shadeColor); + AreColorEqualApproximately(shadeColor, matDesc.Colors["_ShadeColor"]); - Assert.AreEqual(1.0f - 0.1f, matDesc.FloatValues["_GiEqualization"]); + Assert.AreEqual(1.0f - 0.1f, matDesc.FloatValues["_GiEqualization"]); - var (key, value) = matDesc.EnumerateSubAssetKeyValue().First(); - Assert.AreEqual(new SubAssetKey(typeof(Texture2D), "Alicia_body"), key); + var (key, value) = matDesc.EnumerateSubAssetKeyValue().First(); + Assert.AreEqual(new SubAssetKey(typeof(Texture2D), "Alicia_body"), key); + } } private void AreColorEqualApproximately(Color expected, Color actual) diff --git a/Assets/VRM10/Tests/MigrationTests.cs b/Assets/VRM10/Tests/MigrationTests.cs index d1c8f7763..4a491433d 100644 --- a/Assets/VRM10/Tests/MigrationTests.cs +++ b/Assets/VRM10/Tests/MigrationTests.cs @@ -22,9 +22,11 @@ namespace UniVRM10 static JsonNode GetVRM0(byte[] bytes) { - var glb = new GlbBinaryParser(bytes, "vrm0").Parse(); - var json = glb.Json.ParseAsJson(); - return json["extensions"]["VRM"]; + using (var glb = new GlbBinaryParser(bytes, "vrm0").Parse()) + { + var json = glb.Json.ParseAsJson(); + return json["extensions"]["VRM"]; + } } T GetExtension(UniGLTF.glTFExtension extensions, UniJSON.Utf8String key, Func deserializer) @@ -50,14 +52,16 @@ namespace UniVRM10 var vrm0Json = GetVRM0(vrm0Bytes); var vrm1 = MigrationVrm.Migrate(vrm0Bytes); - var glb = new GlbBinaryParser(vrm1, "vrm1").Parse(); - var json = glb.Json.ParseAsJson(); - var gltf = UniGLTF.GltfDeserializer.Deserialize(json); + using (var glb = new GlbBinaryParser(vrm1, "vrm1").Parse()) + { + var json = glb.Json.ParseAsJson(); + var gltf = UniGLTF.GltfDeserializer.Deserialize(json); - MigrationVrm.Check(vrm0Json, GetExtension(gltf.extensions, UniGLTF.Extensions.VRMC_vrm.GltfDeserializer.ExtensionNameUtf8, - UniGLTF.Extensions.VRMC_vrm.GltfDeserializer.Deserialize), MigrationVrm.CreateMeshToNode(gltf)); - MigrationVrm.Check(vrm0Json, GetExtension(gltf.extensions, UniGLTF.Extensions.VRMC_springBone.GltfDeserializer.ExtensionNameUtf8, - UniGLTF.Extensions.VRMC_springBone.GltfDeserializer.Deserialize), gltf.nodes); + MigrationVrm.Check(vrm0Json, GetExtension(gltf.extensions, UniGLTF.Extensions.VRMC_vrm.GltfDeserializer.ExtensionNameUtf8, + UniGLTF.Extensions.VRMC_vrm.GltfDeserializer.Deserialize), MigrationVrm.CreateMeshToNode(gltf)); + MigrationVrm.Check(vrm0Json, GetExtension(gltf.extensions, UniGLTF.Extensions.VRMC_springBone.GltfDeserializer.ExtensionNameUtf8, + UniGLTF.Extensions.VRMC_springBone.GltfDeserializer.Deserialize), gltf.nodes); + } } const float EPS = 1e-4f; @@ -195,6 +199,7 @@ namespace UniVRM10 try { Vrm10Data.TryParseOrMigrate(gltf.FullName, true, out Vrm10Data vrm); + using (vrm) using (var loader = new Vrm10Importer(vrm)) { loader.LoadAsync().Wait(); @@ -218,35 +223,40 @@ namespace UniVRM10 // var VALUE = new Vector3(-0.0359970331f, -0.0188314915f, 0.00566166639f); var bytes0 = File.ReadAllBytes(AliciaPath); - var data0 = new GlbLowLevelParser(AliciaPath, bytes0).Parse(); - var json0 = data0.Json.ParseAsJson(); - var groupIndex = json0["extensions"]["VRM"]["secondaryAnimation"]["boneGroups"][0]["colliderGroups"][0].GetInt32(); - var x = json0["extensions"]["VRM"]["secondaryAnimation"]["colliderGroups"][groupIndex]["colliders"][0]["offset"]["x"].GetSingle(); - var y = json0["extensions"]["VRM"]["secondaryAnimation"]["colliderGroups"][groupIndex]["colliders"][0]["offset"]["y"].GetSingle(); - var z = json0["extensions"]["VRM"]["secondaryAnimation"]["colliderGroups"][groupIndex]["colliders"][0]["offset"]["z"].GetSingle(); - Assert.AreEqual(VALUE.x, x); - Assert.AreEqual(VALUE.y, y); - Assert.AreEqual(VALUE.z, z); + int groupIndex = default; + using (var data0 = new GlbLowLevelParser(AliciaPath, bytes0).Parse()) + { + var json0 = data0.Json.ParseAsJson(); + groupIndex = json0["extensions"]["VRM"]["secondaryAnimation"]["boneGroups"][0]["colliderGroups"][0].GetInt32(); + var x = json0["extensions"]["VRM"]["secondaryAnimation"]["colliderGroups"][groupIndex]["colliders"][0]["offset"]["x"].GetSingle(); + var y = json0["extensions"]["VRM"]["secondaryAnimation"]["colliderGroups"][groupIndex]["colliders"][0]["offset"]["y"].GetSingle(); + var z = json0["extensions"]["VRM"]["secondaryAnimation"]["colliderGroups"][groupIndex]["colliders"][0]["offset"]["z"].GetSingle(); + Assert.AreEqual(VALUE.x, x); + Assert.AreEqual(VALUE.y, y); + Assert.AreEqual(VALUE.z, z); + } // // vrm1 に migrate // var bytes1 = MigrationVrm.Migrate(bytes0); - var data1 = new GlbLowLevelParser(AliciaPath, bytes1).Parse(); - Assert.True(UniGLTF.Extensions.VRMC_springBone.GltfDeserializer.TryGet(data1.GLTF.extensions, out UniGLTF.Extensions.VRMC_springBone.VRMC_springBone springBone)); - var spring = springBone.Springs[0]; - // var colliderNodeIndex = spring.ColliderGroups[0]; - // x軸だけが反転する - - var colliderIndex = 0; - for (int i = 0; i < groupIndex; ++i) + using (var data1 = new GlbLowLevelParser(AliciaPath, bytes1).Parse()) { - colliderIndex += springBone.ColliderGroups[i].Colliders.Length; - } + Assert.True(UniGLTF.Extensions.VRMC_springBone.GltfDeserializer.TryGet(data1.GLTF.extensions, out UniGLTF.Extensions.VRMC_springBone.VRMC_springBone springBone)); + var spring = springBone.Springs[0]; + // var colliderNodeIndex = spring.ColliderGroups[0]; + // x軸だけが反転する - Assert.AreEqual(-VALUE.x, springBone.Colliders[colliderIndex].Shape.Sphere.Offset[0]); - Assert.AreEqual(VALUE.y, springBone.Colliders[colliderIndex].Shape.Sphere.Offset[1]); - Assert.AreEqual(VALUE.z, springBone.Colliders[colliderIndex].Shape.Sphere.Offset[2]); + var colliderIndex = 0; + for (int i = 0; i < groupIndex; ++i) + { + colliderIndex += springBone.ColliderGroups[i].Colliders.Length; + } + + Assert.AreEqual(-VALUE.x, springBone.Colliders[colliderIndex].Shape.Sphere.Offset[0]); + Assert.AreEqual(VALUE.y, springBone.Colliders[colliderIndex].Shape.Sphere.Offset[1]); + Assert.AreEqual(VALUE.z, springBone.Colliders[colliderIndex].Shape.Sphere.Offset[2]); + } } [Test] diff --git a/Assets/VRM10/Tests/TestAsset.cs b/Assets/VRM10/Tests/TestAsset.cs index 803119d99..d3d6c7ec9 100644 --- a/Assets/VRM10/Tests/TestAsset.cs +++ b/Assets/VRM10/Tests/TestAsset.cs @@ -17,6 +17,7 @@ namespace UniVRM10 public static Vrm10Instance LoadAlicia() { Vrm10Data.TryParseOrMigrate(AliciaPath, true, out Vrm10Data vrm); + using (vrm) using (var loader = new Vrm10Importer(vrm)) { var task = loader.LoadAsync(new VRMShaders.ImmediateCaller());