mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-08-26 04:39:51 -05:00
remove unused UniJSON. JsonPointer
This commit is contained in:
@@ -1,99 +0,0 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
|
||||
namespace UniJSON
|
||||
{
|
||||
public struct JsonPointer
|
||||
{
|
||||
public ArraySegment<Utf8String> Path
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
public int Count
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public Utf8String this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Array[Path.Offset + index];
|
||||
}
|
||||
}
|
||||
|
||||
public JsonPointer Unshift()
|
||||
{
|
||||
return new JsonPointer
|
||||
{
|
||||
Path = new ArraySegment<Utf8String>(Path.Array, Path.Offset + 1, Path.Count - 1)
|
||||
};
|
||||
}
|
||||
|
||||
public static JsonPointer Create(JsonNode node)
|
||||
{
|
||||
return new JsonPointer
|
||||
{
|
||||
Path = new ArraySegment<Utf8String>(node.Path().Skip(1).Select(x => GetKeyFromParent(x)).ToArray())
|
||||
};
|
||||
}
|
||||
|
||||
public JsonPointer(Utf8String pointer) : this()
|
||||
{
|
||||
int pos;
|
||||
if (!pointer.TrySearchAscii((Byte)'/', 0, out pos))
|
||||
{
|
||||
throw new ArgumentException();
|
||||
}
|
||||
if (pos != 0)
|
||||
{
|
||||
throw new ArgumentException();
|
||||
}
|
||||
|
||||
var split = pointer.Split((Byte)'/').ToArray();
|
||||
Path = new ArraySegment<Utf8String>(split, 1, split.Length - 1);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
if (Path.Count == 0)
|
||||
{
|
||||
return "/";
|
||||
}
|
||||
|
||||
var sb = new StringBuilder();
|
||||
var end = Path.Offset + Path.Count;
|
||||
for (int i = Path.Offset; i < end; ++i)
|
||||
{
|
||||
sb.Append('/');
|
||||
sb.Append(Path.Array[i]);
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
static Utf8String GetKeyFromParent(JsonNode json)
|
||||
{
|
||||
var parent = json.Parent;
|
||||
if (parent.IsArray())
|
||||
{
|
||||
var index = parent.IndexOf(json);
|
||||
return Utf8String.From(index);
|
||||
}
|
||||
else if (parent.IsMap())
|
||||
{
|
||||
return parent.KeyOf(json);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8b7033668ce791e40819d16e664efe18
|
||||
timeCreated: 1543321766
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,132 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
|
||||
namespace UniJSON
|
||||
{
|
||||
public static class ListTreeNodeJsonPointerExtensions
|
||||
{
|
||||
public static void SetValue(this JsonNode self,
|
||||
Utf8String jsonPointer, ArraySegment<Byte> bytes)
|
||||
{
|
||||
foreach (var node in self.GetNodes(jsonPointer))
|
||||
{
|
||||
node.SetValue(default(JsonValue).New(
|
||||
bytes,
|
||||
ValueNodeType.Boolean,
|
||||
node.Value.ParentIndex));
|
||||
}
|
||||
}
|
||||
|
||||
public static void RemoveValue(this JsonNode self, Utf8String jsonPointer)
|
||||
{
|
||||
foreach (var node in self.GetNodes(new JsonPointer(jsonPointer)))
|
||||
{
|
||||
if (node.Parent.IsMap())
|
||||
{
|
||||
node.Prev.SetValue(default(JsonValue)); // remove key
|
||||
}
|
||||
node.SetValue(default(JsonValue)); // remove
|
||||
}
|
||||
}
|
||||
|
||||
public static JsonPointer Pointer(this JsonNode self)
|
||||
{
|
||||
return JsonPointer.Create(self);
|
||||
}
|
||||
|
||||
public static IEnumerable<JsonNode> Path(this JsonNode self)
|
||||
{
|
||||
if (self.HasParent)
|
||||
{
|
||||
foreach (var x in self.Parent.Path())
|
||||
{
|
||||
yield return x;
|
||||
}
|
||||
}
|
||||
yield return self;
|
||||
}
|
||||
|
||||
public static IEnumerable<JsonNode> GetNodes(this JsonNode self,
|
||||
JsonPointer jsonPointer)
|
||||
{
|
||||
if (jsonPointer.Path.Count == 0)
|
||||
{
|
||||
yield return self;
|
||||
yield break;
|
||||
}
|
||||
|
||||
if (self.IsArray())
|
||||
{
|
||||
// array
|
||||
if (jsonPointer[0][0] == '*')
|
||||
{
|
||||
// wildcard
|
||||
foreach (var child in self.ArrayItems())
|
||||
{
|
||||
foreach (var childChild in child.GetNodes(jsonPointer.Unshift()))
|
||||
{
|
||||
yield return childChild;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int index = jsonPointer[0].ToInt32();
|
||||
var child = self.ArrayItems().Skip(index).First();
|
||||
foreach (var childChild in child.GetNodes(jsonPointer.Unshift()))
|
||||
{
|
||||
yield return childChild;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (self.IsMap())
|
||||
{
|
||||
// object
|
||||
if (jsonPointer[0][0] == '*')
|
||||
{
|
||||
// wildcard
|
||||
foreach (var kv in self.ObjectItems())
|
||||
{
|
||||
foreach (var childChild in kv.Value.GetNodes(jsonPointer.Unshift()))
|
||||
{
|
||||
yield return childChild;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
JsonNode child;
|
||||
try
|
||||
{
|
||||
child = self.ObjectItems().First(x => x.Key.GetUtf8String() == jsonPointer[0]).Value;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// key
|
||||
self.AddKey(jsonPointer[0]);
|
||||
// value
|
||||
self.AddValue(default(ArraySegment<byte>), ValueNodeType.Object);
|
||||
|
||||
child = self.ObjectItems().First(x => x.Key.GetUtf8String() == jsonPointer[0]).Value;
|
||||
}
|
||||
foreach (var childChild in child.GetNodes(jsonPointer.Unshift()))
|
||||
{
|
||||
yield return childChild;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerable<JsonNode> GetNodes(this JsonNode self,
|
||||
Utf8String jsonPointer)
|
||||
{
|
||||
return self.GetNodes(new JsonPointer(jsonPointer));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 20e02dc7c390454448d4a3ce7aca4d17
|
||||
timeCreated: 1545735556
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -102,123 +102,6 @@ namespace UniJSON
|
||||
return new Utf8String(new ArraySegment<byte>(bytes, 0, pos));
|
||||
}
|
||||
|
||||
// -2147483648 ~ 2147483647
|
||||
public static Utf8String From(int src)
|
||||
{
|
||||
if (src >= 0)
|
||||
{
|
||||
if (src < 10)
|
||||
{
|
||||
return new Utf8String(new byte[] {
|
||||
(byte)(0x30 + src),
|
||||
});
|
||||
}
|
||||
else if (src < 100)
|
||||
{
|
||||
return new Utf8String(new byte[] {
|
||||
(byte)(0x30 + src/10),
|
||||
(byte)(0x30 + src%10),
|
||||
});
|
||||
}
|
||||
else if (src < 1000)
|
||||
{
|
||||
return new Utf8String(new byte[] {
|
||||
(byte)(0x30 + src/100),
|
||||
(byte)(0x30 + src/10),
|
||||
(byte)(0x30 + src%10),
|
||||
});
|
||||
}
|
||||
else if (src < 10000)
|
||||
{
|
||||
return new Utf8String(new byte[] {
|
||||
(byte)(0x30 + src/1000),
|
||||
(byte)(0x30 + src/100),
|
||||
(byte)(0x30 + src/10),
|
||||
(byte)(0x30 + src%10),
|
||||
});
|
||||
}
|
||||
else if (src < 100000)
|
||||
{
|
||||
return new Utf8String(new byte[] {
|
||||
(byte)(0x30 + src/10000),
|
||||
(byte)(0x30 + src/1000),
|
||||
(byte)(0x30 + src/100),
|
||||
(byte)(0x30 + src/10),
|
||||
(byte)(0x30 + src%10),
|
||||
});
|
||||
}
|
||||
else if (src < 1000000)
|
||||
{
|
||||
return new Utf8String(new byte[] {
|
||||
(byte)(0x30 + src/100000),
|
||||
(byte)(0x30 + src/10000),
|
||||
(byte)(0x30 + src/1000),
|
||||
(byte)(0x30 + src/100),
|
||||
(byte)(0x30 + src/10),
|
||||
(byte)(0x30 + src%10),
|
||||
});
|
||||
}
|
||||
else if (src < 10000000)
|
||||
{
|
||||
return new Utf8String(new byte[] {
|
||||
(byte)(0x30 + src/1000000),
|
||||
(byte)(0x30 + src/100000),
|
||||
(byte)(0x30 + src/10000),
|
||||
(byte)(0x30 + src/1000),
|
||||
(byte)(0x30 + src/100),
|
||||
(byte)(0x30 + src/10),
|
||||
(byte)(0x30 + src%10),
|
||||
});
|
||||
}
|
||||
else if (src < 100000000)
|
||||
{
|
||||
return new Utf8String(new byte[] {
|
||||
(byte)(0x30 + src/10000000),
|
||||
(byte)(0x30 + src/1000000),
|
||||
(byte)(0x30 + src/100000),
|
||||
(byte)(0x30 + src/10000),
|
||||
(byte)(0x30 + src/1000),
|
||||
(byte)(0x30 + src/100),
|
||||
(byte)(0x30 + src/10),
|
||||
(byte)(0x30 + src%10),
|
||||
});
|
||||
}
|
||||
else if (src < 1000000000)
|
||||
{
|
||||
return new Utf8String(new byte[] {
|
||||
(byte)(0x30 + src/100000000),
|
||||
(byte)(0x30 + src/10000000),
|
||||
(byte)(0x30 + src/1000000),
|
||||
(byte)(0x30 + src/100000),
|
||||
(byte)(0x30 + src/10000),
|
||||
(byte)(0x30 + src/1000),
|
||||
(byte)(0x30 + src/100),
|
||||
(byte)(0x30 + src/10),
|
||||
(byte)(0x30 + src%10),
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
return new Utf8String(new byte[] {
|
||||
(byte)(0x30 + src/1000000000),
|
||||
(byte)(0x30 + src/100000000),
|
||||
(byte)(0x30 + src/10000000),
|
||||
(byte)(0x30 + src/1000000),
|
||||
(byte)(0x30 + src/100000),
|
||||
(byte)(0x30 + src/10000),
|
||||
(byte)(0x30 + src/1000),
|
||||
(byte)(0x30 + src/100),
|
||||
(byte)(0x30 + src/10),
|
||||
(byte)(0x30 + src%10),
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public Utf8String Concat(Utf8String rhs)
|
||||
{
|
||||
var bytes = new Byte[ByteLength + rhs.ByteLength];
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
using NUnit.Framework;
|
||||
using System.Linq;
|
||||
|
||||
|
||||
namespace UniJSON
|
||||
{
|
||||
public class JsonDiffTests
|
||||
{
|
||||
[Test]
|
||||
public void PathTest()
|
||||
{
|
||||
var json=@"
|
||||
{
|
||||
""a"": [
|
||||
{
|
||||
""aa"": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
";
|
||||
var root = JsonParser.Parse(json);
|
||||
|
||||
{
|
||||
var it = root.Traverse().GetEnumerator();
|
||||
it.MoveNext(); Assert.AreEqual("/", it.Current.Pointer().ToString());
|
||||
it.MoveNext(); Assert.AreEqual("/a", it.Current.Pointer().ToString());
|
||||
it.MoveNext(); Assert.AreEqual("/a/0", it.Current.Pointer().ToString());
|
||||
it.MoveNext(); Assert.AreEqual("/a/0/aa", it.Current.Pointer().ToString());
|
||||
Assert.False(it.MoveNext());
|
||||
}
|
||||
|
||||
{
|
||||
var it = root.Traverse().GetEnumerator();
|
||||
|
||||
var f = new JsonFormatter();
|
||||
f.Value("JsonPath");
|
||||
|
||||
root.SetValue(Utf8String.From("/a"), f.GetStoreBytes());
|
||||
it.MoveNext(); Assert.AreEqual("/", it.Current.Pointer().ToString());
|
||||
it.MoveNext(); Assert.AreEqual("/a", it.Current.Pointer().ToString());
|
||||
Assert.False(it.MoveNext());
|
||||
}
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
[Test]
|
||||
public void Vector3()
|
||||
{
|
||||
var src = new UnityEngine.Vector3(1, 2, 3);
|
||||
var json = UnityEngine.JsonUtility.ToJson(src);
|
||||
Assert.AreEqual("{\"x\":1.0,\"y\":2.0,\"z\":3.0}", json);
|
||||
var dst = UnityEngine.JsonUtility.FromJson<UnityEngine.Vector3>(json);
|
||||
Assert.AreEqual(src, dst);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bafda51ddeeb2b84b920b119176499b8
|
||||
timeCreated: 1532154188
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -11,15 +11,6 @@ namespace VRM.Samples
|
||||
{
|
||||
public static class JsonExtensions
|
||||
{
|
||||
public static void SetValue<T>(this JsonNode node, string key, T value, Action<JsonFormatter, T> serialize)
|
||||
{
|
||||
var f = new JsonFormatter();
|
||||
serialize(f, value);
|
||||
var p = Utf8String.From(key);
|
||||
var bytes = f.GetStoreBytes();
|
||||
node.SetValue(p, bytes);
|
||||
}
|
||||
|
||||
public static string ToJson(this glTF self)
|
||||
{
|
||||
var f = new JsonFormatter();
|
||||
@@ -125,64 +116,6 @@ namespace VRM.Samples
|
||||
Assert.AreEqual(Enum.Parse(typeof(BlendShapePreset), gltfBlendShapeClip.presetName, true), unityBlendShapeClip.Preset);
|
||||
}
|
||||
}
|
||||
|
||||
var importedJson = JsonParser.Parse(context.Json);
|
||||
importedJson.SetValue("/extensions/VRM/exporterVersion", VRMVersion.VRM_VERSION, (f, x) => f.Value(x));
|
||||
importedJson.SetValue("/asset/generator", UniGLTF.UniGLTFVersion.UNIGLTF_VERSION, (f, x) => f.Value(x));
|
||||
importedJson.SetValue("/scene", 0, (f, x) => f.Value(x));
|
||||
importedJson.SetValue("/materials/*/doubleSided", false, (f, x) => f.Value(x));
|
||||
//importJson.SetValue("/materials/*/pbrMetallicRoughness/roughnessFactor", 0);
|
||||
//importJson.SetValue("/materials/*/pbrMetallicRoughness/baseColorFactor", new float[] { 1, 1, 1, 1 });
|
||||
importedJson.SetValue("/accessors/*/normalized", false, (f, x) => f.Value(x));
|
||||
importedJson.RemoveValue(Utf8String.From("/nodes/*/extras"));
|
||||
/*
|
||||
importJson.SetValue("/bufferViews/12/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/13/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/14/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/15/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/22/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/29/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/45/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/46/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/47/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/201/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/202/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/203/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/204/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/211/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/212/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/213/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/214/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/215/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/243/byteStride", 4);
|
||||
importJson.SetValue("/bufferViews/247/byteStride", 64);
|
||||
importJson.SetValue("/bufferViews/248/byteStride", 64);
|
||||
importJson.SetValue("/bufferViews/249/byteStride", 64);
|
||||
importJson.SetValue("/bufferViews/250/byteStride", 64);
|
||||
importJson.SetValue("/bufferViews/251/byteStride", 64);
|
||||
importJson.SetValue("/bufferViews/252/byteStride", 64);
|
||||
importJson.SetValue("/bufferViews/253/byteStride", 64);
|
||||
*/
|
||||
importedJson.RemoveValue(Utf8String.From("/bufferViews/*/byteStride"));
|
||||
|
||||
var vrm = VRMExporter.Export(new GltfExportSettings(), loaded.gameObject, new EditorTextureSerializer());
|
||||
|
||||
// TODO: Check contents in JSON
|
||||
/*var exportJson = */
|
||||
JsonParser.Parse(vrm.Gltf.ToJson());
|
||||
|
||||
// TODO: Check contents in JSON
|
||||
/*var newExportedJson = */
|
||||
// JsonParser.Parse(JsonSchema.FromType<glTF>().Serialize(vrm));
|
||||
|
||||
/*
|
||||
foreach (var kv in importJson.Diff(exportJson))
|
||||
{
|
||||
Debug.Log(kv);
|
||||
}
|
||||
|
||||
Assert.AreEqual(importJson, exportJson);
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user