From 38434ee9f9482981d8151ff87fe0b5e112637ea4 Mon Sep 17 00:00:00 2001 From: momoma-null Date: Wed, 10 Jun 2026 16:08:01 +0900 Subject: [PATCH] =?UTF-8?q?string=E3=82=92=E8=BF=94=E3=81=95=E3=81=9A?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5byte=E9=85=8D=E5=88=97=E3=82=92=E6=B8=A1?= =?UTF-8?q?=E3=81=99=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UniGLTF/Runtime/UniGLTF/IO/GltfData.cs | 20 ++++++++++++++++++- .../UniGLTF/IO/Parser/GlbLowLevelParser.cs | 7 ++++++- .../UniJSON/Extensions/ParserExtensions.cs | 4 ++++ .../Runtime/UniJSON/Utf8String/Utf8String.cs | 16 +++++++-------- .../Tests/UniGLTF/TextureEnumerateTests.cs | 2 +- 5 files changed, 37 insertions(+), 12 deletions(-) diff --git a/Packages/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs b/Packages/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs index 7126eca66..c998e7687 100644 --- a/Packages/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs +++ b/Packages/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs @@ -2,7 +2,11 @@ using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; +<<<<<<< HEAD:Packages/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs using UniJSON; +======= +using System.Text; +>>>>>>> bce3a9b5c (stringを返さず直接byte配列を渡すように変更):Assets/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs using Unity.Collections; namespace UniGLTF @@ -33,7 +37,11 @@ namespace UniGLTF /// JSON chunk ToString /// > This chunk MUST be the very first chunk of Binary glTF asset /// +<<<<<<< HEAD:Packages/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs public string Json => _jsonString ??= _utf8JsonString.ToString(); +======= + public string Json => _json ?? Encoding.UTF8.GetString(_jsonBytes.Span); +>>>>>>> bce3a9b5c (stringを返さず直接byte配列を渡すように変更):Assets/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs /// /// GLTF parsed from JSON chunk @@ -73,6 +81,7 @@ namespace UniGLTF /// Dictionary> _UriCache = new Dictionary>(); +<<<<<<< HEAD:Packages/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs /// /// json string in utf8 /// @@ -106,6 +115,15 @@ namespace UniGLTF { TargetPath = targetPath; _utf8JsonString = jsonString; +======= + private string _json; + readonly ReadOnlyMemory _jsonBytes; + + public GltfData(string targetPath, ReadOnlyMemory jsonBytes, glTF gltf, IReadOnlyList chunks, IStorage storage, MigrationFlags migrationFlags) + { + TargetPath = targetPath; + _jsonBytes = jsonBytes; +>>>>>>> bce3a9b5c (stringを返さず直接byte配列を渡すように変更):Assets/UniGLTF/Runtime/UniGLTF/IO/GltfData.cs GLTF = gltf; Chunks = chunks; _storage = storage; @@ -136,7 +154,7 @@ namespace UniGLTF { return new GltfData( string.Empty, - string.Empty, + Array.Empty(), gltf, new List { diff --git a/Packages/UniGLTF/Runtime/UniGLTF/IO/Parser/GlbLowLevelParser.cs b/Packages/UniGLTF/Runtime/UniGLTF/IO/Parser/GlbLowLevelParser.cs index 7aac0298a..d092ea6e9 100644 --- a/Packages/UniGLTF/Runtime/UniGLTF/IO/Parser/GlbLowLevelParser.cs +++ b/Packages/UniGLTF/Runtime/UniGLTF/IO/Parser/GlbLowLevelParser.cs @@ -35,7 +35,7 @@ namespace UniGLTF var jsonBytes = chunks[0].Bytes; return ParseGltf( path, - Encoding.UTF8.GetString(jsonBytes.Span), + jsonBytes, chunks, default, new MigrationFlags() @@ -79,6 +79,11 @@ namespace UniGLTF } internal static GltfData ParseGltf(string path, Utf8String json, IReadOnlyList chunks, IStorage storage, MigrationFlags migrationFlags) + { + return ParseGltf(path, json.Bytes, chunks, storage, migrationFlags); + } + + public static GltfData ParseGltf(string path, ReadOnlyMemory json, IReadOnlyList chunks, IStorage storage, MigrationFlags migrationFlags) { var jsonNode = json.ParseAsJson(); var GLTF = GltfDeserializer.Deserialize(jsonNode); diff --git a/Packages/UniGLTF/Runtime/UniJSON/Extensions/ParserExtensions.cs b/Packages/UniGLTF/Runtime/UniJSON/Extensions/ParserExtensions.cs index 15108108d..681feb0bd 100644 --- a/Packages/UniGLTF/Runtime/UniJSON/Extensions/ParserExtensions.cs +++ b/Packages/UniGLTF/Runtime/UniJSON/Extensions/ParserExtensions.cs @@ -21,5 +21,9 @@ namespace UniJSON { return JsonParser.Parse(new Utf8String(bytes)); } + public static JsonNode ParseAsJson(this ReadOnlyMemory bytes) + { + return JsonParser.Parse(new Utf8String(bytes)); + } } } diff --git a/Packages/UniGLTF/Runtime/UniJSON/Utf8String/Utf8String.cs b/Packages/UniGLTF/Runtime/UniJSON/Utf8String/Utf8String.cs index 592fe1825..9a6a70802 100644 --- a/Packages/UniGLTF/Runtime/UniJSON/Utf8String/Utf8String.cs +++ b/Packages/UniGLTF/Runtime/UniJSON/Utf8String/Utf8String.cs @@ -8,11 +8,9 @@ namespace UniJSON { public static readonly System.Text.Encoding Encoding = new System.Text.UTF8Encoding(false); - public readonly ReadOnlyMemory Bytes; - public int ByteLength - { - get { return Bytes.Length; } - } + public readonly ReadOnlyMemory Bytes; + + public int ByteLength => Bytes.Length; public Utf8Iterator GetIterator() { @@ -59,17 +57,17 @@ namespace UniJSON public Utf8String(ArraySegment bytes) { - Bytes = new ReadOnlyMemory(bytes.Array, bytes.Offset, bytes.Count); + Bytes = bytes; } public Utf8String(Byte[] bytes, int offset, int count) { - Bytes = new ReadOnlyMemory(bytes, offset, count); + Bytes = bytes.AsMemory(offset,count); } public Utf8String(Byte[] bytes) { - Bytes = new ReadOnlyMemory(bytes); + Bytes = bytes; } public static Utf8String From(string src) @@ -117,7 +115,7 @@ namespace UniJSON return new Utf8String(bytes); } - public ReadOnlySpan AsSpan() => Bytes.AsSpan(); + public ReadOnlySpan AsSpan() => Bytes.Span; public override string ToString() { diff --git a/Packages/UniGLTF/Tests/UniGLTF/TextureEnumerateTests.cs b/Packages/UniGLTF/Tests/UniGLTF/TextureEnumerateTests.cs index b40ebce51..2b1c431bf 100644 --- a/Packages/UniGLTF/Tests/UniGLTF/TextureEnumerateTests.cs +++ b/Packages/UniGLTF/Tests/UniGLTF/TextureEnumerateTests.cs @@ -232,7 +232,7 @@ namespace UniGLTF { return new GltfData( string.Empty, - string.Empty, + Array.Empty(), gltf, new List(), default,