54 lines
1.3 KiB
C#
54 lines
1.3 KiB
C#
using System.IO;
|
|
using UniGLTF.JsonSchema;
|
|
using UniGLTF.JsonSchema.Schemas;
|
|
|
|
namespace GenerateUniGLTFSerialization
|
|
{
|
|
public static class DeserializerWriter
|
|
{
|
|
const string Begin = @"// This file is generated from JsonSchema. Don't modify this source code.
|
|
using UniJSON;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace UniGLTF.Extensions.$0 {
|
|
|
|
public static class GltfDeserializer
|
|
{
|
|
public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From($0.ExtensionName);
|
|
|
|
public static bool TryGet(UniGLTF.glTFExtension src, out $0 extension)
|
|
{
|
|
if(src is UniGLTF.glTFExtensionImport extensions)
|
|
{
|
|
foreach(var kv in extensions.ObjectItems())
|
|
{
|
|
if(kv.Key.GetUtf8String() == ExtensionNameUtf8)
|
|
{
|
|
extension = Deserialize(kv.Value);
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
extension = default;
|
|
return false;
|
|
}
|
|
|
|
";
|
|
|
|
const string End = @"
|
|
} // GltfDeserializer
|
|
} // UniGLTF
|
|
";
|
|
|
|
public static void Write(TextWriter w, JsonSchemaSource root, string rootName)
|
|
{
|
|
w.Write(Begin.Replace("$0", rootName));
|
|
root.Create(true, rootName).GenerateDeserializer(new TraverseContext(w), "Deserialize");
|
|
w.Write(End);
|
|
}
|
|
}
|
|
}
|