mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-04-20 05:57:21 -05:00
separate
This commit is contained in:
parent
719a8ecddf
commit
c94315c786
|
|
@ -0,0 +1,43 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace UniGLTF
|
||||
{
|
||||
public class ArraySerialization : FunctionSerializationBase
|
||||
{
|
||||
IValueSerialization m_inner;
|
||||
|
||||
public ArraySerialization(Type t, IValueSerialization inner)
|
||||
{
|
||||
ValueType = t;
|
||||
m_inner = inner;
|
||||
}
|
||||
public override void GenerateDeserializer(StreamWriter writer, string callName)
|
||||
{
|
||||
var itemCallName = callName + "_ARRAY";
|
||||
|
||||
writer.Write(@"
|
||||
public static $0 $2(ListTreeNode<JsonValue> parsed)
|
||||
{
|
||||
var value = new $1[parsed.GetArrayCount()];
|
||||
int i=0;
|
||||
foreach(var x in parsed.ArrayItems())
|
||||
{
|
||||
value[i++] = $3;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
"
|
||||
.Replace("$0", UniJSON.JsonSchemaAttribute.GetTypeName(ValueType))
|
||||
.Replace("$1", m_inner.ValueType.Name)
|
||||
.Replace("$2", callName)
|
||||
.Replace("$3", m_inner.GenerateDeserializerCall(itemCallName, "x"))
|
||||
);
|
||||
|
||||
if (!m_inner.IsInline)
|
||||
{
|
||||
m_inner.GenerateDeserializer(writer, itemCallName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,115 +0,0 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace UniGLTF
|
||||
{
|
||||
public class ArraySerialization : FunctionSerializationBase
|
||||
{
|
||||
IValueSerialization m_inner;
|
||||
|
||||
public ArraySerialization(Type t, IValueSerialization inner)
|
||||
{
|
||||
ValueType = t;
|
||||
m_inner = inner;
|
||||
}
|
||||
public override void GenerateDeserializer(StreamWriter writer, string callName)
|
||||
{
|
||||
var itemCallName = callName + "_ARRAY";
|
||||
|
||||
writer.Write(@"
|
||||
public static $0 $2(ListTreeNode<JsonValue> parsed)
|
||||
{
|
||||
var value = new $1[parsed.GetArrayCount()];
|
||||
int i=0;
|
||||
foreach(var x in parsed.ArrayItems())
|
||||
{
|
||||
value[i++] = $3;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
"
|
||||
.Replace("$0", UniJSON.JsonSchemaAttribute.GetTypeName(ValueType))
|
||||
.Replace("$1", m_inner.ValueType.Name)
|
||||
.Replace("$2", callName)
|
||||
.Replace("$3", m_inner.GenerateDeserializerCall(itemCallName, "x"))
|
||||
);
|
||||
|
||||
if (!m_inner.IsInline)
|
||||
{
|
||||
m_inner.GenerateDeserializer(writer, itemCallName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ListSerialization : FunctionSerializationBase
|
||||
{
|
||||
IValueSerialization m_inner;
|
||||
|
||||
public ListSerialization(Type t, IValueSerialization inner)
|
||||
{
|
||||
ValueType = t;
|
||||
m_inner = inner;
|
||||
}
|
||||
public override void GenerateDeserializer(StreamWriter writer, string callName)
|
||||
{
|
||||
var itemCallName = callName + "_LIST";
|
||||
writer.Write(@"
|
||||
public static $0 $2(ListTreeNode<JsonValue> parsed)
|
||||
{
|
||||
var value = new List<$1>();
|
||||
foreach(var x in parsed.ArrayItems())
|
||||
{
|
||||
value.Add($3);
|
||||
}
|
||||
return value;
|
||||
}"
|
||||
.Replace("$0", UniJSON.JsonSchemaAttribute.GetTypeName(ValueType))
|
||||
.Replace("$1", m_inner.ValueType.Name)
|
||||
.Replace("$2", callName)
|
||||
.Replace("$3", m_inner.GenerateDeserializerCall(itemCallName, "x"))
|
||||
);
|
||||
|
||||
if (!m_inner.IsInline)
|
||||
{
|
||||
m_inner.GenerateDeserializer(writer, itemCallName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class StringKeyDictionarySerialization : FunctionSerializationBase
|
||||
{
|
||||
IValueSerialization m_inner;
|
||||
|
||||
public StringKeyDictionarySerialization(Type t, IValueSerialization inner)
|
||||
{
|
||||
ValueType = t;
|
||||
m_inner = inner;
|
||||
}
|
||||
public override void GenerateDeserializer(StreamWriter writer, string callName)
|
||||
{
|
||||
var itemCallName = callName + "_DICT";
|
||||
writer.Write(@"
|
||||
|
||||
public static $0 $2(ListTreeNode<JsonValue> parsed)
|
||||
{
|
||||
var value = new Dictionary<string, $1>();
|
||||
foreach(var kv in parsed.ObjectItems())
|
||||
{
|
||||
value.Add(kv.Key.GetString(), $3);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
"
|
||||
.Replace("$0", UniJSON.JsonSchemaAttribute.GetTypeName(ValueType))
|
||||
.Replace("$1", m_inner.ValueType.Name)
|
||||
.Replace("$2", callName)
|
||||
.Replace("$3", m_inner.GenerateDeserializerCall(itemCallName, "kv.Value"))
|
||||
);
|
||||
|
||||
if (!m_inner.IsInline)
|
||||
{
|
||||
m_inner.GenerateDeserializer(writer, itemCallName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
using System.IO;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using UnityEditor;
|
||||
|
|
@ -6,10 +6,30 @@ using UnityEngine;
|
|||
|
||||
namespace UniGLTF
|
||||
{
|
||||
/// <summary>
|
||||
/// Generate deserializer from ListTreeNode<JsonValue> to glTF using type reflection
|
||||
/// </summary>
|
||||
public static class DeserializerGenerator
|
||||
{
|
||||
public const BindingFlags FIELD_FLAGS = BindingFlags.Instance | BindingFlags.Public;
|
||||
|
||||
const string Begin = @"using UniJSON;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UniGLTF {
|
||||
|
||||
public static class GltfDeserializer
|
||||
{
|
||||
|
||||
";
|
||||
|
||||
const string End = @"
|
||||
} // GltfDeserializer
|
||||
} // UniGLTF
|
||||
";
|
||||
|
||||
static string OutPath
|
||||
{
|
||||
get
|
||||
|
|
@ -19,9 +39,6 @@ namespace UniGLTF
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AOT向けにデシリアライザを生成する
|
||||
/// </summary>
|
||||
[MenuItem(UniGLTFVersion.MENU + "/GLTF: Generate Deserializer")]
|
||||
static void GenerateSerializer()
|
||||
{
|
||||
|
|
@ -29,32 +46,14 @@ namespace UniGLTF
|
|||
Debug.Log(info);
|
||||
|
||||
using (var s = File.Open(OutPath, FileMode.Create))
|
||||
using (var w = new StreamWriter(s, Encoding.UTF8))
|
||||
using (var w = new StreamWriter(s, new UTF8Encoding(false)))
|
||||
{
|
||||
// header
|
||||
w.Write(@"
|
||||
using UniJSON;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UniGLTF {
|
||||
|
||||
public static class GltfDeserializer
|
||||
{
|
||||
|
||||
");
|
||||
|
||||
w.Write(Begin);
|
||||
info.GenerateDeserializer(w, "Deserialize");
|
||||
|
||||
// footer
|
||||
w.Write(@"
|
||||
} // GltfDeserializer
|
||||
} // UniGLTF
|
||||
");
|
||||
|
||||
Debug.LogFormat("write: {0}", OutPath);
|
||||
w.Write(End);
|
||||
}
|
||||
|
||||
Debug.LogFormat("write: {0}", OutPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
|
@ -140,17 +140,26 @@ namespace UniGLTF
|
|||
|
||||
var typeName = BaseJsonSchemaAttribute.GetTypeName(m_fi.FieldType);
|
||||
|
||||
if (m_attr != null)
|
||||
{
|
||||
sb.AppendLine(string.Format("{0}: {1}", Path, m_attr.GetInfo(m_fi)));
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.AppendLine(string.Format("{0}: {1}", Path, typeName));
|
||||
}
|
||||
// if (m_attr != null)
|
||||
// {
|
||||
// sb.AppendLine(string.Format("{0}: {1}", Path, m_attr.GetInfo(m_fi)));
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// sb.AppendLine(string.Format("{0}: {1}", Path, typeName));
|
||||
// }
|
||||
// sb.Append(Serialization.ToString());
|
||||
// if (m_attr != null)
|
||||
// {
|
||||
// sb.Append(string.Format("{0}: {1}", Path, m_attr.GetInfo(m_fi)));
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// sb.Append(string.Format("{0}: {1}", Path, typeName));
|
||||
// }
|
||||
sb.Append(string.Format("{0}: {1}", Path, Serialization));
|
||||
|
||||
sb.Append(Serialization.ToString());
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace UniGLTF
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace UniGLTF
|
||||
{
|
||||
public class ListSerialization : FunctionSerializationBase
|
||||
{
|
||||
IValueSerialization m_inner;
|
||||
|
||||
public ListSerialization(Type t, IValueSerialization inner)
|
||||
{
|
||||
ValueType = t;
|
||||
m_inner = inner;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return m_inner.ToString();
|
||||
}
|
||||
|
||||
public override void GenerateDeserializer(StreamWriter writer, string callName)
|
||||
{
|
||||
var itemCallName = callName + "_LIST";
|
||||
writer.Write(@"
|
||||
public static $0 $2(ListTreeNode<JsonValue> parsed)
|
||||
{
|
||||
var value = new List<$1>();
|
||||
foreach(var x in parsed.ArrayItems())
|
||||
{
|
||||
value.Add($3);
|
||||
}
|
||||
return value;
|
||||
}"
|
||||
.Replace("$0", UniJSON.JsonSchemaAttribute.GetTypeName(ValueType))
|
||||
.Replace("$1", m_inner.ValueType.Name)
|
||||
.Replace("$2", callName)
|
||||
.Replace("$3", m_inner.GenerateDeserializerCall(itemCallName, "x"))
|
||||
);
|
||||
|
||||
if (!m_inner.IsInline)
|
||||
{
|
||||
m_inner.GenerateDeserializer(writer, itemCallName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 2d23c57f5d8b3314fba9c1b9de18e5e6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -56,7 +56,7 @@ namespace UniGLTF
|
|||
var sb = new StringBuilder();
|
||||
foreach (var x in m_fsi)
|
||||
{
|
||||
sb.Append(x.ToString());
|
||||
sb.Append(x.ToString() + "\n");
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace UniGLTF
|
||||
|
|
@ -18,6 +18,11 @@ namespace UniGLTF
|
|||
}
|
||||
|
||||
public abstract string GenerateDeserializerCall(string callName, string argName);
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return ValueType.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
public class Int8Serialization : PrimitiveSerializationBase
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace UniGLTF
|
||||
{
|
||||
public class StringKeyDictionarySerialization : FunctionSerializationBase
|
||||
{
|
||||
IValueSerialization m_inner;
|
||||
|
||||
public StringKeyDictionarySerialization(Type t, IValueSerialization inner)
|
||||
{
|
||||
ValueType = t;
|
||||
m_inner = inner;
|
||||
}
|
||||
public override void GenerateDeserializer(StreamWriter writer, string callName)
|
||||
{
|
||||
var itemCallName = callName + "_DICT";
|
||||
writer.Write(@"
|
||||
|
||||
public static $0 $2(ListTreeNode<JsonValue> parsed)
|
||||
{
|
||||
var value = new Dictionary<string, $1>();
|
||||
foreach(var kv in parsed.ObjectItems())
|
||||
{
|
||||
value.Add(kv.Key.GetString(), $3);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
"
|
||||
.Replace("$0", UniJSON.JsonSchemaAttribute.GetTypeName(ValueType))
|
||||
.Replace("$1", m_inner.ValueType.Name)
|
||||
.Replace("$2", callName)
|
||||
.Replace("$3", m_inner.GenerateDeserializerCall(itemCallName, "kv.Value"))
|
||||
);
|
||||
|
||||
if (!m_inner.IsInline)
|
||||
{
|
||||
m_inner.GenerateDeserializer(writer, itemCallName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 760fc2dffd8f64544ab2c6a16fea7d79
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
using UniJSON;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user