KhronosExtensions.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace SharpGLTF
  5. {
  6. public static class KhronosExtensions
  7. {
  8. #region API
  9. public static IEnumerable<SchemaProcessor> GetExtensionsProcessors()
  10. {
  11. // material extensions
  12. yield return new UnlitExtension();
  13. yield return new IorExtension();
  14. yield return new SheenExtension();
  15. yield return new VolumeExtension();
  16. yield return new SpecularExtension();
  17. yield return new ClearCoatExtension();
  18. yield return new DispersionExtension();
  19. yield return new AnisotropyExtension();
  20. yield return new IridescenceExtension();
  21. yield return new TransmissionExtension();
  22. yield return new DiffuseTransmissionExtension();
  23. yield return new EmissiveStrengthExtension();
  24. yield return new SpecularGlossinessExtension();
  25. // lights
  26. yield return new LightsPunctualExtension();
  27. // gpu mesh instancing
  28. yield return new MeshGpuInstancingExtension();
  29. // textures
  30. yield return new TextureTransformExtension();
  31. yield return new TextureDDSExtension();
  32. yield return new TextureWebpExtension();
  33. yield return new TextureKtx2Extension();
  34. // other
  35. yield return new XmpJsonLdExtension();
  36. yield return new AnimationPointerExtension();
  37. }
  38. #endregion
  39. #region root paths
  40. /// <summary>
  41. /// Program directory
  42. /// </summary>
  43. public static string ProgramDirectory => System.IO.Path.GetDirectoryName(typeof(KhronosExtensions).Assembly.Location);
  44. /// <summary>
  45. /// Directory where the schema is downloaded and used as source
  46. /// </summary>
  47. public static string LocalRepoDirectory => System.IO.Path.Combine(ProgramDirectory, "glTF");
  48. #endregion
  49. #region extension paths
  50. private static string ArchivedSchemaDir => System.IO.Path.Combine(LocalRepoDirectory, "extensions", "2.0", "Archived");
  51. private static string KhronosSchemaDir => System.IO.Path.Combine(LocalRepoDirectory, "extensions", "2.0", "Khronos");
  52. private static string VendorSchemaDir => System.IO.Path.Combine(LocalRepoDirectory, "extensions", "2.0", "Vendor");
  53. internal static string ArchivedExtensionPath(string ext, string json)
  54. {
  55. return System.IO.Path.Combine(ArchivedSchemaDir, ext, "schema", json);
  56. }
  57. internal static string KhronosExtensionPath(string ext, string json)
  58. {
  59. return System.IO.Path.Combine(KhronosSchemaDir, ext, "schema", json);
  60. }
  61. internal static string VendorExtensionPath(string ext, string json)
  62. {
  63. return System.IO.Path.Combine(VendorSchemaDir, ext, "schema", json);
  64. }
  65. #endregion
  66. }
  67. }