2
0

Ext.KHR_XmpJsonLD.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Microsoft.VisualBasic.FileIO;
  5. using SharpGLTF.SchemaReflection;
  6. namespace SharpGLTF
  7. {
  8. class XmpJsonLdExtension : SchemaProcessor
  9. {
  10. private static string RootSchemaUri => Constants.KhronosExtensionPath("KHR_xmp_json_ld", "glTF.KHR_xmp_json_ld.schema.json");
  11. private static string PropSchemaUri => Constants.KhronosExtensionPath("KHR_xmp_json_ld", "KHR_xmp_json_ld.schema.json");
  12. private const string ExtensionRootClassName = "KHR_xmp_json_ld glTF Document Extension";
  13. private const string ExtensionPropClassName = "KHR_xmp_json_ld glTF Extension";
  14. public override IEnumerable<(string, SchemaType.Context)> Process()
  15. {
  16. yield return ("ext.XmpJsonLinkedData.Root.g", ProcessModel());
  17. yield return ("ext.XmpJsonLinkedData.Prop.g", ProcessProps());
  18. }
  19. private static SchemaType.Context ProcessModel()
  20. {
  21. var ctx = SchemaProcessing.LoadSchemaContext(RootSchemaUri);
  22. ctx.IgnoredByCodeEmitter("glTF Property");
  23. ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
  24. var packets = ctx.FindClass(ExtensionRootClassName).GetField("packets");
  25. return ctx;
  26. }
  27. private static SchemaType.Context ProcessProps()
  28. {
  29. var ctx = SchemaProcessing.LoadSchemaContext(PropSchemaUri);
  30. ctx.IgnoredByCodeEmitter("glTF Property");
  31. ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
  32. return ctx;
  33. }
  34. public override void PrepareTypes(CodeGen.CSharpEmitter newEmitter, SchemaType.Context ctx)
  35. {
  36. newEmitter.SetRuntimeName(ExtensionRootClassName, "XmpPackets");
  37. newEmitter.SetRuntimeName(ExtensionPropClassName, "XmpPacketReference");
  38. }
  39. }
  40. }