Ext.EXT_MeshFeatures.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using SharpGLTF.CodeGen;
  2. using SharpGLTF.SchemaReflection;
  3. using System;
  4. using System.Collections.Generic;
  5. namespace SharpGLTF
  6. {
  7. class ExtMeshFeaturesExtension : SchemaProcessor
  8. {
  9. public override string GetTargetProject() { return CesiumExtensions.CesiumProjectDirectory; }
  10. private static string RootSchemaUri => CesiumExtensions.CustomExtensionsPath("EXT_mesh_features", "mesh.primitive.EXT_mesh_features.schema.json");
  11. const string ExtensionFeatureIdTextureName = "Feature ID Texture in EXT_mesh_features";
  12. public override void PrepareTypes(CSharpEmitter newEmitter, SchemaType.Context ctx)
  13. {
  14. newEmitter.SetRuntimeName("EXT_mesh_features glTF Mesh Primitive extension", "MeshExtMeshFeatures", CesiumExtensions.CesiumNameSpace);
  15. newEmitter.SetRuntimeName("Feature ID in EXT_mesh_features", "MeshExtMeshFeatureID", CesiumExtensions.CesiumNameSpace);
  16. newEmitter.SetRuntimeName(ExtensionFeatureIdTextureName, "MeshExtMeshFeatureIDTexture", CesiumExtensions.CesiumNameSpace);
  17. newEmitter.SetFieldToChildrenList(ctx, "EXT_mesh_features glTF Mesh Primitive extension", "featureIds");
  18. }
  19. public override IEnumerable<(string TargetFileName, SchemaType.Context Schema)> ReadSchema()
  20. {
  21. yield return ("Ext.CESIUM_ext_mesh_features.g", ProcessNode());
  22. }
  23. private static SchemaType.Context ProcessNode()
  24. {
  25. var ctx = SchemaProcessing.LoadSchemaContext(RootSchemaUri);
  26. ctx.IgnoredByCodeEmitter("glTF Property");
  27. ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
  28. ctx.IgnoredByCodeEmitter("Texture Info");
  29. var fld = ctx.FindClass(ExtensionFeatureIdTextureName)
  30. .GetField("channels");
  31. // for now we simply remove the default value, it can be set
  32. // in the constructor or on demand when the APIs are Called.
  33. fld.RemoveDefaultValue();
  34. return ctx;
  35. }
  36. }
  37. }