KHR_Sheen.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using SharpGLTF.SchemaReflection;
  5. namespace SharpGLTF
  6. {
  7. class SheenExtension : SchemaProcessor
  8. {
  9. private static string SchemaUri => KhronosExtensions.KhronosExtensionPath("KHR_materials_sheen", "material.KHR_materials_sheen.schema.json");
  10. private const string ExtensionRootClassName = "KHR_materials_sheen glTF Material Extension";
  11. public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
  12. {
  13. var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
  14. ctx.FindClass(ExtensionRootClassName)
  15. .GetField("sheenColorFactor")
  16. .SetDataType(typeof(System.Numerics.Vector3), true)
  17. .SetDefaultValue("Vector3.Zero")
  18. .SetItemsRange(0);
  19. ctx.FindClass(ExtensionRootClassName)
  20. .GetField("sheenRoughnessFactor")
  21. .SetDataType(typeof(float), true)
  22. .SetItemsRange(0);
  23. yield return ("ext.Sheen.g", ctx);
  24. }
  25. public override void PrepareTypes(CodeGen.CSharpEmitter newEmitter, SchemaType.Context ctx)
  26. {
  27. newEmitter.SetRuntimeName(ExtensionRootClassName, "MaterialSheen");
  28. }
  29. }
  30. }