KHR_DiffuseTransmission.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using SharpGLTF.SchemaReflection;
  5. namespace SharpGLTF
  6. {
  7. class DiffuseTransmissionExtension : SchemaProcessor
  8. {
  9. // it seems KHR_materials_diffuse_transmission has
  10. // file naming issues and it's subject to change anytime.
  11. // https://github.com/KhronosGroup/glTF/issues/2482
  12. private static string SchemaUri => KhronosExtensions.KhronosExtensionPath("KHR_materials_diffuse_transmission", "material.KHR_materials_diffuse_transmission.schema.json");
  13. private const string ExtensionRootClassName = "KHR_materials_diffuse_transmission glTF Material Extension";
  14. public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
  15. {
  16. var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
  17. ctx.FindClass(ExtensionRootClassName)
  18. .GetField("diffuseTransmissionColorFactor")
  19. .SetDataType(typeof(System.Numerics.Vector3), true)
  20. .SetDefaultValue("Vector3.One")
  21. .SetItemsRange(0);
  22. yield return("ext.DiffuseTransmission.g", ctx);
  23. }
  24. public override void PrepareTypes(CodeGen.CSharpEmitter newEmitter, SchemaType.Context ctx)
  25. {
  26. newEmitter.SetRuntimeName(ExtensionRootClassName, "MaterialDiffuseTransmission");
  27. }
  28. }
  29. }