Ext.KHR_Volume.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System;
  2. using System.Collections.Generic;
  3. using SharpGLTF.SchemaReflection;
  4. namespace SharpGLTF
  5. {
  6. class VolumeExtension : SchemaProcessor
  7. {
  8. private static string SchemaUri => Constants.KhronosExtensionPath("KHR_materials_volume", "material.KHR_materials_volume.schema.json");
  9. private const string ExtensionRootClassName = "KHR_materials_volume glTF Material Extension";
  10. public override IEnumerable<(string, SchemaType.Context)> Process()
  11. {
  12. var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
  13. ctx.IgnoredByCodeEmitter("glTF Property");
  14. ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
  15. ctx.IgnoredByCodeEmitter("Texture Info");
  16. var cls = ctx.FindClass(ExtensionRootClassName);
  17. cls.GetField("attenuationColor")
  18. .SetDataType(typeof(System.Numerics.Vector3), true)
  19. .SetDefaultValue("Vector3.One")
  20. .SetItemsRange(0);
  21. yield return ("ext.MaterialsVolume.g", ctx);
  22. }
  23. public override void PrepareTypes(CodeGen.CSharpEmitter newEmitter, SchemaType.Context ctx)
  24. {
  25. newEmitter.SetRuntimeName(ExtensionRootClassName, "MaterialVolume");
  26. }
  27. }
  28. }