Ext.AGI_RootStkMetadata.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using SharpGLTF.SchemaReflection;
  5. namespace SharpGLTF
  6. {
  7. class AgiStkMetadataExtension : SchemaProcessor
  8. {
  9. public override string GetTargetProject() { return Constants.AgiProjectDirectory; }
  10. private static string RootSchemaUri => Constants.VendorExtensionPath("AGI_stk_metadata", "glTF.AGI_stk_metadata.schema.json");
  11. private static string NodeSchemaUri => Constants.VendorExtensionPath("AGI_stk_metadata", "node.AGI_stk_metadata.schema.json");
  12. public override IEnumerable<(string, SchemaType.Context)> Process()
  13. {
  14. yield return ("ext.AgiRootStkMetadata.g", ProcessRoot());
  15. yield return ("ext.AgiNodeStkMetadata.g", ProcessNode());
  16. }
  17. private static SchemaType.Context ProcessRoot()
  18. {
  19. var ctx = SchemaProcessing.LoadSchemaContext(RootSchemaUri);
  20. ctx.IgnoredByCodeEmitter("glTF Property");
  21. ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
  22. return ctx;
  23. }
  24. private static SchemaType.Context ProcessNode()
  25. {
  26. var ctx = SchemaProcessing.LoadSchemaContext(NodeSchemaUri);
  27. ctx.IgnoredByCodeEmitter("glTF Property");
  28. ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
  29. return ctx;
  30. }
  31. public override void PrepareTypes(CodeGen.CSharpEmitter newEmitter, SchemaType.Context ctx)
  32. {
  33. newEmitter.SetRuntimeName("AGI_stk_metadata glTF extension", "AgiRootStkMetadata", Constants.AgiNameSpace);
  34. newEmitter.SetRuntimeName("AGI_stk_metadata glTF Node extension", "AgiNodeStkMetadata", Constants.AgiNameSpace);
  35. newEmitter.SetRuntimeName("Solar Panel Group", "AgiStkSolarPanelGroup", Constants.AgiNameSpace);
  36. }
  37. }
  38. }