Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[1.0]ジェネレーターの生成コード(Format)からUniJSON, UniGLTF依存を除去 #886

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Assets/UniGLTF/Editor/Generator/DeserializerWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,15 @@ 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() == $0.ExtensionNameUtf8)
if(kv.Key.GetUtf8String() == ExtensionNameUtf8)
{
extension = Deserialize(kv.Value);
return true;
Expand Down
29 changes: 2 additions & 27 deletions Assets/UniGLTF/Editor/Generator/FormatWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,29 +19,6 @@ class FormatWriter
m_prefix = prefix;
}

// static string UpperCamelCase(string src)
// {
// if(string.IsNullOrEmpty(src))
// {
// return "";
// }
// return src.Substring(0, 1).ToUpper() + src.Substring(1);
// }

// string ClassName(string src)
// {
// if(string.IsNullOrEmpty(src))
// {
// // root
// return m_prefix;
// }
// else{
// return String.Join("", src.Split("__").Select(x => UpperCamelCase(x)));
// }
// }

const string EnumStringAttr = "[JsonSchema(EnumSerializationType = EnumSerializationType.AsString)]";

static (string, string) PropType(JsonSchemaBase schema)
{
switch (schema.JsonSchemaType)
Expand All @@ -55,7 +32,7 @@ class FormatWriter
return (null, schema.ValueType);

case JsonSchemaType.EnumString:
return (EnumStringAttr, schema.ValueType);
return (null, schema.ValueType);
}

throw new NotImplementedException();
Expand All @@ -81,7 +58,6 @@ public class {className}
{
var indent = " ";
m_w.WriteLine($"{indent}public const string ExtensionName = \"{rootName}\";");
m_w.WriteLine($"{indent}public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(ExtensionName);");
m_w.WriteLine();
}

Expand Down Expand Up @@ -178,8 +154,7 @@ public static void Write(TextWriter w, JsonSchemaSource root, string rootName)
w.Write($@"// This file is generated from JsonSchema. Don't modify this source code.
using System;
using System.Collections.Generic;
using UniGLTF;
using UniJSON;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😄



namespace UniGLTF.Extensions.{rootName}
{{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public ExtensionJsonSchema(in JsonSchemaSource source) : base(source)
{
}

public override string ValueType => "glTFExtension";
public override string ValueType => "object";

public override bool IsInline => true;

Expand All @@ -25,7 +25,7 @@ public override string CreateSerializationCondition(string argName)

public override string GenerateSerializerCall(string callName, string argName)
{
return $"{argName}.Serialize(f)";
return $"({argName} as glTFExtension).Serialize(f)";
}
}
}
10 changes: 4 additions & 6 deletions Assets/VRM10/Editor/GeneratorMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,15 @@ namespace UniVRM10
/// <summary>
/// JsonSchema から vrm10 のシリアライザーを生成する。
///
/// * https://github.com/KhronosGroup/glTF
/// * https://github.com/vrm-c/vrm-specification
///
/// を UniVRM の隣に clone しておくこと。
///
/// * UniVRM
/// * glTF
/// * vrm-specification
///
/// は SubModuleになった。 `$ git submodule update --init` しておくこと。
///
/// </summary>
public static class Menu
{
#if VRM_DEVELOP
[MenuItem(UniVRM10.VRMVersion.MENU + "/Generate from JsonSchema")]
public static void Generate()
{
Expand All @@ -30,6 +27,7 @@ public static void Parse()
{
Run(true);
}
#endif

static void Run(bool debug)
{
Expand Down
3 changes: 2 additions & 1 deletion Assets/VRM10/Runtime/Format/Constraints/Deserializer.g.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,15 @@ namespace UniGLTF.Extensions.VRMC_node_constraint {

public static class GltfDeserializer
{
public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(VRMC_node_constraint.ExtensionName);

public static bool TryGet(UniGLTF.glTFExtension src, out VRMC_node_constraint extension)
{
if(src is UniGLTF.glTFExtensionImport extensions)
{
foreach(var kv in extensions.ObjectItems())
{
if(kv.Key.GetUtf8String() == VRMC_node_constraint.ExtensionNameUtf8)
if(kv.Key.GetUtf8String() == ExtensionNameUtf8)
{
extension = Deserialize(kv.Value);
return true;
Expand Down
30 changes: 11 additions & 19 deletions Assets/VRM10/Runtime/Format/Constraints/Format.g.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
// This file is generated from JsonSchema. Don't modify this source code.
using System;
using System.Collections.Generic;
using UniGLTF;
using UniJSON;


namespace UniGLTF.Extensions.VRMC_node_constraint
{
Expand All @@ -17,10 +16,10 @@ public enum ObjectSpace
public class PositionConstraint
{
// Dictionary object with extension-specific objects.
public glTFExtension Extensions;
public object Extensions;

// Application-specific data.
public glTFExtension Extras;
public object Extras;

// The user-defined name of this object.
public string Name;
Expand All @@ -29,11 +28,9 @@ public class PositionConstraint
public int? Source;

// The source node will be evaluated in this space.
[JsonSchema(EnumSerializationType = EnumSerializationType.AsString)]
public ObjectSpace SourceSpace;

// The destination node will be evaluated in this space.
[JsonSchema(EnumSerializationType = EnumSerializationType.AsString)]
public ObjectSpace DestinationSpace;

// Axes be constrained by this constraint, in X-Y-Z order.
Expand All @@ -46,10 +43,10 @@ public class PositionConstraint
public class RotationConstraint
{
// Dictionary object with extension-specific objects.
public glTFExtension Extensions;
public object Extensions;

// Application-specific data.
public glTFExtension Extras;
public object Extras;

// The user-defined name of this object.
public string Name;
Expand All @@ -58,11 +55,9 @@ public class RotationConstraint
public int? Source;

// The source node will be evaluated in this space.
[JsonSchema(EnumSerializationType = EnumSerializationType.AsString)]
public ObjectSpace SourceSpace;

// The destination node will be evaluated in this space.
[JsonSchema(EnumSerializationType = EnumSerializationType.AsString)]
public ObjectSpace DestinationSpace;

// Axes be constrained by this constraint, in X-Y-Z order.
Expand All @@ -75,10 +70,10 @@ public class RotationConstraint
public class AimConstraint
{
// Dictionary object with extension-specific objects.
public glTFExtension Extensions;
public object Extensions;

// Application-specific data.
public glTFExtension Extras;
public object Extras;

// The user-defined name of this object.
public string Name;
Expand All @@ -87,11 +82,9 @@ public class AimConstraint
public int? Source;

// The source node will be evaluated in this space.
[JsonSchema(EnumSerializationType = EnumSerializationType.AsString)]
public ObjectSpace SourceSpace;

// The destination node will be evaluated in this space.
[JsonSchema(EnumSerializationType = EnumSerializationType.AsString)]
public ObjectSpace DestinationSpace;

// An axis which faces the direction of its source.
Expand All @@ -110,10 +103,10 @@ public class AimConstraint
public class Constraint
{
// Dictionary object with extension-specific objects.
public glTFExtension Extensions;
public object Extensions;

// Application-specific data.
public glTFExtension Extras;
public object Extras;

// A constraint that links the position with a source.
public PositionConstraint Position;
Expand All @@ -128,13 +121,12 @@ public class Constraint
public class VRMC_node_constraint
{
public const string ExtensionName = "VRMC_node_constraint";
public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(ExtensionName);

// Dictionary object with extension-specific objects.
public glTFExtension Extensions;
public object Extensions;

// Application-specific data.
public glTFExtension Extras;
public object Extras;

// Contains position, rotation, or aim
public Constraint Constraint;
Expand Down
20 changes: 10 additions & 10 deletions Assets/VRM10/Runtime/Format/Constraints/Serializer.g.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,12 @@ public static void Serialize(JsonFormatter f, VRMC_node_constraint value)

if(value.Extensions!=null){
f.Key("extensions");
value.Extensions.Serialize(f);
(value.Extensions as glTFExtension).Serialize(f);
}

if(value.Extras!=null){
f.Key("extras");
value.Extras.Serialize(f);
(value.Extras as glTFExtension).Serialize(f);
}

if(value.Constraint!=null){
Expand All @@ -58,12 +58,12 @@ public static void Serialize_Constraint(JsonFormatter f, Constraint value)

if(value.Extensions!=null){
f.Key("extensions");
value.Extensions.Serialize(f);
(value.Extensions as glTFExtension).Serialize(f);
}

if(value.Extras!=null){
f.Key("extras");
value.Extras.Serialize(f);
(value.Extras as glTFExtension).Serialize(f);
}

if(value.Position!=null){
Expand Down Expand Up @@ -91,12 +91,12 @@ public static void __constraint_Serialize_Position(JsonFormatter f, PositionCons

if(value.Extensions!=null){
f.Key("extensions");
value.Extensions.Serialize(f);
(value.Extensions as glTFExtension).Serialize(f);
}

if(value.Extras!=null){
f.Key("extras");
value.Extras.Serialize(f);
(value.Extras as glTFExtension).Serialize(f);
}

if(!string.IsNullOrEmpty(value.Name)){
Expand Down Expand Up @@ -151,12 +151,12 @@ public static void __constraint_Serialize_Rotation(JsonFormatter f, RotationCons

if(value.Extensions!=null){
f.Key("extensions");
value.Extensions.Serialize(f);
(value.Extensions as glTFExtension).Serialize(f);
}

if(value.Extras!=null){
f.Key("extras");
value.Extras.Serialize(f);
(value.Extras as glTFExtension).Serialize(f);
}

if(!string.IsNullOrEmpty(value.Name)){
Expand Down Expand Up @@ -211,12 +211,12 @@ public static void __constraint_Serialize_Aim(JsonFormatter f, AimConstraint val

if(value.Extensions!=null){
f.Key("extensions");
value.Extensions.Serialize(f);
(value.Extensions as glTFExtension).Serialize(f);
}

if(value.Extras!=null){
f.Key("extras");
value.Extras.Serialize(f);
(value.Extras as glTFExtension).Serialize(f);
}

if(!string.IsNullOrEmpty(value.Name)){
Expand Down
3 changes: 2 additions & 1 deletion Assets/VRM10/Runtime/Format/MaterialsMToon/Deserializer.g.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,15 @@ namespace UniGLTF.Extensions.VRMC_materials_mtoon {

public static class GltfDeserializer
{
public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(VRMC_materials_mtoon.ExtensionName);

public static bool TryGet(UniGLTF.glTFExtension src, out VRMC_materials_mtoon extension)
{
if(src is UniGLTF.glTFExtensionImport extensions)
{
foreach(var kv in extensions.ObjectItems())
{
if(kv.Key.GetUtf8String() == VRMC_materials_mtoon.ExtensionNameUtf8)
if(kv.Key.GetUtf8String() == ExtensionNameUtf8)
{
extension = Deserialize(kv.Value);
return true;
Expand Down
Loading