Browse Source

simplified extensions building

vpenades 8 months ago
parent
commit
cd861acef7
32 changed files with 104 additions and 160 deletions
  1. 3 7
      build/SharpGLTF.CodeGen/Ext.AGI_Articulations.cs
  2. 3 7
      build/SharpGLTF.CodeGen/Ext.AGI_RootStkMetadata.cs
  3. 2 4
      build/SharpGLTF.CodeGen/Ext.CESIUM_primitive_outline.cs
  4. 2 5
      build/SharpGLTF.CodeGen/Ext.EXT_InstanceFeatures.cs
  5. 1 1
      build/SharpGLTF.CodeGen/Ext.EXT_MeshFeatures.cs
  6. 2 4
      build/SharpGLTF.CodeGen/Ext.EXT_MeshGpuInstancing.cs
  7. 27 29
      build/SharpGLTF.CodeGen/Ext.EXT_Structural_Metadata.cs
  8. 2 3
      build/SharpGLTF.CodeGen/Ext.EXT_TextureWebp.cs
  9. 2 3
      build/SharpGLTF.CodeGen/Ext.KHR_AnimPointer.cs
  10. 2 6
      build/SharpGLTF.CodeGen/Ext.KHR_Anisotropy.cs
  11. 2 6
      build/SharpGLTF.CodeGen/Ext.KHR_ClearCoat.cs
  12. 2 6
      build/SharpGLTF.CodeGen/Ext.KHR_DiffuseTransmission.cs
  13. 2 4
      build/SharpGLTF.CodeGen/Ext.KHR_Dispersion.cs
  14. 2 5
      build/SharpGLTF.CodeGen/Ext.KHR_EmissiveStrength.cs
  15. 2 6
      build/SharpGLTF.CodeGen/Ext.KHR_IOR.cs
  16. 2 6
      build/SharpGLTF.CodeGen/Ext.KHR_Iridescence.cs
  17. 3 4
      build/SharpGLTF.CodeGen/Ext.KHR_LightsPunctual.cs
  18. 2 7
      build/SharpGLTF.CodeGen/Ext.KHR_Sheen.cs
  19. 2 6
      build/SharpGLTF.CodeGen/Ext.KHR_Specular.cs
  20. 2 5
      build/SharpGLTF.CodeGen/Ext.KHR_SpecularGlossiness.cs
  21. 2 3
      build/SharpGLTF.CodeGen/Ext.KHR_TextureBasisU.cs
  22. 2 4
      build/SharpGLTF.CodeGen/Ext.KHR_TextureTransform.cs
  23. 2 6
      build/SharpGLTF.CodeGen/Ext.KHR_Transmission.cs
  24. 2 4
      build/SharpGLTF.CodeGen/Ext.KHR_Unlit.cs
  25. 2 5
      build/SharpGLTF.CodeGen/Ext.KHR_Volume.cs
  26. 4 7
      build/SharpGLTF.CodeGen/Ext.KHR_XmpJsonLD.cs
  27. 2 3
      build/SharpGLTF.CodeGen/Ext.MSFT_TextureDDS.cs
  28. 1 1
      build/SharpGLTF.CodeGen/MainSchemaProcessor.cs
  29. 1 1
      build/SharpGLTF.CodeGen/Program.cs
  30. 7 0
      build/SharpGLTF.CodeGen/SchemaProcessing.cs
  31. 1 1
      build/SharpGLTF.CodeGen/SchemaProcessor.cs
  32. 11 1
      build/SharpGLTF.CodeGen/SchemaReflection/SchemaTypesContext.cs

+ 3 - 7
build/SharpGLTF.CodeGen/Ext.AGI_Articulations.cs

@@ -12,7 +12,7 @@ namespace SharpGLTF
         private static string RootSchemaUri => Constants.VendorExtensionPath("AGI_articulations", "glTF.AGI_articulations.schema.json");
         private static string NodeSchemaUri => Constants.VendorExtensionPath("AGI_articulations", "node.AGI_articulations.schema.json");
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
             yield return ("ext.AgiRootArticulations.g", ProcessRoot());
             yield return ("ext.AgiNodeArticulations.g", ProcessNode());
@@ -20,9 +20,7 @@ namespace SharpGLTF
 
         private static SchemaType.Context ProcessRoot()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(RootSchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(RootSchemaUri);
 
             ctx.FindClass("Articulation")
                 .GetField("pointingVector")
@@ -34,9 +32,7 @@ namespace SharpGLTF
 
         private static SchemaType.Context ProcessNode()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(NodeSchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(NodeSchemaUri);
 
             return ctx;
         }

+ 3 - 7
build/SharpGLTF.CodeGen/Ext.AGI_RootStkMetadata.cs

@@ -12,7 +12,7 @@ namespace SharpGLTF
         private static string RootSchemaUri => Constants.VendorExtensionPath("AGI_stk_metadata", "glTF.AGI_stk_metadata.schema.json");
         private static string NodeSchemaUri => Constants.VendorExtensionPath("AGI_stk_metadata", "node.AGI_stk_metadata.schema.json");
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
             yield return ("ext.AgiRootStkMetadata.g", ProcessRoot());
             yield return ("ext.AgiNodeStkMetadata.g", ProcessNode());
@@ -20,17 +20,13 @@ namespace SharpGLTF
 
         private static SchemaType.Context ProcessRoot()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(RootSchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(RootSchemaUri);
             return ctx;
         }
 
         private static SchemaType.Context ProcessNode()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(NodeSchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(NodeSchemaUri);            
             return ctx;
         }
 

+ 2 - 4
build/SharpGLTF.CodeGen/Ext.CESIUM_primitive_outline.cs

@@ -15,16 +15,14 @@ namespace SharpGLTF
             newEmitter.SetRuntimeName("CESIUM_primitive_outline glTF primitive extension", "CesiumPrimitiveOutline", Constants.CesiumNameSpace);
         }        
 
-        public override IEnumerable<(string TargetFileName, SchemaType.Context Schema)> Process()
+        public override IEnumerable<(string TargetFileName, SchemaType.Context Schema)> ReadSchema()
         {
             yield return ("Ext.CESIUM_primitive_outline.g", ProcessRoot());
         }
 
         private static SchemaType.Context ProcessRoot()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(RootSchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(RootSchemaUri);
 
             return ctx;
         }

+ 2 - 5
build/SharpGLTF.CodeGen/Ext.EXT_InstanceFeatures.cs

@@ -18,17 +18,14 @@ namespace SharpGLTF
             newEmitter.SetFieldToChildrenList(ctx, "EXT_instance_features glTF Node extension", "featureIds");
         }
 
-        public override IEnumerable<(string TargetFileName, SchemaType.Context Schema)> Process()
+        public override IEnumerable<(string TargetFileName, SchemaType.Context Schema)> ReadSchema()
         {
             yield return ("Ext.CESIUM_ext_instance_features.g", ProcessNode());
         }
 
         private static SchemaType.Context ProcessNode()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(NodeSchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(NodeSchemaUri);
             return ctx;
         }
     }

+ 1 - 1
build/SharpGLTF.CodeGen/Ext.EXT_MeshFeatures.cs

@@ -22,7 +22,7 @@ namespace SharpGLTF
             newEmitter.SetFieldToChildrenList(ctx, "EXT_mesh_features glTF Mesh Primitive extension", "featureIds");
         }
     
-        public override IEnumerable<(string TargetFileName, SchemaType.Context Schema)> Process()
+        public override IEnumerable<(string TargetFileName, SchemaType.Context Schema)> ReadSchema()
         {
             yield return ("Ext.CESIUM_ext_mesh_features.g", ProcessNode());
         }

+ 2 - 4
build/SharpGLTF.CodeGen/Ext.EXT_MeshGpuInstancing.cs

@@ -9,11 +9,9 @@ namespace SharpGLTF
     class MeshGpuInstancingExtension : SchemaProcessor
     {
         private static string SchemaUri => Constants.VendorExtensionPath("EXT_mesh_gpu_instancing", "glTF.EXT_mesh_gpu_instancing.schema.json");
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             yield return ("ext.MeshGpuInstancing.g", ctx);
         }

+ 27 - 29
build/SharpGLTF.CodeGen/Ext.EXT_Structural_Metadata.cs

@@ -13,6 +13,32 @@ namespace SharpGLTF
         private static string RootSchemaUri => Constants.CustomExtensionsPath("EXT_structural_metadata", "glTF.EXT_structural_metadata.schema.json");
         private static string MeshPrimitiveSchemaUri => Constants.CustomExtensionsPath("EXT_structural_metadata", "mesh.primitive.EXT_structural_metadata.schema.json");
 
+        public override IEnumerable<(string TargetFileName, SchemaType.Context Schema)> ReadSchema()
+        {
+            yield return ("Ext.CESIUM_ext_structural_metadata_root.g", ProcessRoot());
+            yield return ("Ext.CESIUM_ext_structural_metadata_primitive.g", ProcessMeshPrimitive());
+        }
+
+        private static SchemaType.Context ProcessRoot()
+        {
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(RootSchemaUri);
+
+            // for now we simply remove the default value, it can be set
+            // in the constructor or on demand when the APIs are Called.
+            var fld = ctx.FindClass(ExtensionPropertyTexturePropertyName).GetField("channels");
+            fld.RemoveDefaultValue();
+
+            return ctx;
+        }
+
+        private static SchemaType.Context ProcessMeshPrimitive()
+        {
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(MeshPrimitiveSchemaUri);
+            return ctx;
+        }
+
+
+
         public override void PrepareTypes(CSharpEmitter newEmitter, SchemaType.Context ctx)
         {
             newEmitter.SetRuntimeName("EXT_structural_metadata glTF Mesh Primitive extension", "ExtStructuralMetadataMeshPrimitive", Constants.CesiumNameSpace);
@@ -50,35 +76,7 @@ namespace SharpGLTF
             newEmitter.SetFieldToChildrenDictionary(ctx, "Schema in EXT_structural_metadata", "enums");
         }
 
-        public override IEnumerable<(string TargetFileName, SchemaType.Context Schema)> Process()
-        {
-            yield return ("Ext.CESIUM_ext_structural_metadata_root.g", ProcessRoot());
-            yield return ("Ext.CESIUM_ext_structural_metadata_primitive.g", ProcessMeshPrimitive());
-        }
-
-        private static SchemaType.Context ProcessRoot()
-        {
-            var ctx = SchemaProcessing.LoadSchemaContext(RootSchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
-            var fld = ctx.FindClass(ExtensionPropertyTexturePropertyName).GetField("channels");
-
-            // for now we simply remove the default value, it can be set
-            // in the constructor or on demand when the APIs are Called.
-            fld.RemoveDefaultValue();
-
-            return ctx;
-        }
-
-        private static SchemaType.Context ProcessMeshPrimitive()
-        {
-            var ctx = SchemaProcessing.LoadSchemaContext(MeshPrimitiveSchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
-            return ctx;
-        }
+        
 
 
     }

+ 2 - 3
build/SharpGLTF.CodeGen/Ext.EXT_TextureWebp.cs

@@ -9,10 +9,9 @@ namespace SharpGLTF
     class TextureWebpExtension : SchemaProcessor
     {
         private static string SchemaUri => Constants.VendorExtensionPath("EXT_texture_webp", "glTF.EXT_texture_webp.schema.json");
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);            
 
             yield return ("ext.TextureWEBP.g", ctx);
         }

+ 2 - 3
build/SharpGLTF.CodeGen/Ext.KHR_AnimPointer.cs

@@ -14,10 +14,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_animation_pointer glTF Animation Channel Target Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");            
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             yield return ("ext.AnimPointer.g", ctx);
         }

+ 2 - 6
build/SharpGLTF.CodeGen/Ext.KHR_Anisotropy.cs

@@ -12,13 +12,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_materials_anisotropy glTF Material Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
-            ctx.IgnoredByCodeEmitter("Material Normal Texture Info");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             yield return("ext.Anisotropy.g", ctx);
         }

+ 2 - 6
build/SharpGLTF.CodeGen/Ext.KHR_ClearCoat.cs

@@ -12,13 +12,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_materials_clearcoat glTF Material Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
-            ctx.IgnoredByCodeEmitter("Material Normal Texture Info");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             yield return("ext.ClearCoat.g", ctx);
         }

+ 2 - 6
build/SharpGLTF.CodeGen/Ext.KHR_DiffuseTransmission.cs

@@ -16,13 +16,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_materials_diffuse_transmission glTF extension"; // not correctly named?
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
-            ctx.IgnoredByCodeEmitter("Material Normal Texture Info");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             ctx.FindClass(ExtensionRootClassName)
                 .GetField("diffuseTransmissionColorFactor")

+ 2 - 4
build/SharpGLTF.CodeGen/Ext.KHR_Dispersion.cs

@@ -12,11 +12,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_materials_dispersion glTF Material Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");            
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);   
 
             yield return ("ext.Dispersion.g", ctx);
         }

+ 2 - 5
build/SharpGLTF.CodeGen/Ext.KHR_EmissiveStrength.cs

@@ -11,12 +11,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_materials_emissive_strength glTF Material Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             var cls = ctx.FindClass(ExtensionRootClassName);
             

+ 2 - 6
build/SharpGLTF.CodeGen/Ext.KHR_IOR.cs

@@ -12,13 +12,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_materials_ior glTF Material Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            // ctx.IgnoredByCodeEmitter("Texture Info");
-            // ctx.IgnoredByCodeEmitter("Material Normal Texture Info");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             yield return ("ext.Ior.g", ctx);
         }

+ 2 - 6
build/SharpGLTF.CodeGen/Ext.KHR_Iridescence.cs

@@ -14,13 +14,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_materials_iridescence glTF Material Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
-            ctx.IgnoredByCodeEmitter("Material Normal Texture Info");            
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);    
 
             yield return ("ext.Iridescence.g", ctx);
         }

+ 3 - 4
build/SharpGLTF.CodeGen/Ext.KHR_LightsPunctual.cs

@@ -16,22 +16,21 @@ namespace SharpGLTF
         private const string ExtensionLightClassName = "KHR_lights_punctual Light Properties";
         private const string ExtensionLightSpotClassName = "KHR_lights_punctual Light Spot Properties";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {            
             yield return ("ext.ModelLightsPunctual.g", ProcessModel());
             yield return ("ext.NodeLightsPunctual.g", ProcessNode());
         }
         private static SchemaType.Context ProcessModel()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(RootSchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(RootSchemaUri);
 
             ctx.FindClass(ExtensionLightClassName)
                 .GetField("color")
                 .SetDataType(typeof(System.Numerics.Vector3), true)
                 .SetDefaultValue("Vector3.One")
                 .SetItemsRange(0);
+
             return ctx;
         }
 

+ 2 - 7
build/SharpGLTF.CodeGen/Ext.KHR_Sheen.cs

@@ -12,14 +12,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_materials_sheen glTF Material Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
-            ctx.IgnoredByCodeEmitter("Material Normal Texture Info");
-
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             ctx.FindClass(ExtensionRootClassName)
                 .GetField("sheenColorFactor")

+ 2 - 6
build/SharpGLTF.CodeGen/Ext.KHR_Specular.cs

@@ -12,13 +12,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_materials_specular glTF Material Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
-            ctx.IgnoredByCodeEmitter("Material Normal Texture Info");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             ctx.FindClass(ExtensionRootClassName)
                 .GetField("specularColorFactor")

+ 2 - 5
build/SharpGLTF.CodeGen/Ext.KHR_SpecularGlossiness.cs

@@ -9,12 +9,9 @@ namespace SharpGLTF
     class SpecularGlossinessExtension : SchemaProcessor
     {
         private static string SchemaUri => Constants.ArchivedExtensionPath("KHR_materials_pbrSpecularGlossiness", "glTF.KHR_materials_pbrSpecularGlossiness.schema.json");
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             ctx.FindClass("KHR_materials_pbrSpecularGlossiness glTF extension")
                 .GetField("diffuseFactor")

+ 2 - 3
build/SharpGLTF.CodeGen/Ext.KHR_TextureBasisU.cs

@@ -12,10 +12,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_texture_basisu glTF Texture Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             yield return ("ext.TextureKTX2.g", ctx);
         }

+ 2 - 4
build/SharpGLTF.CodeGen/Ext.KHR_TextureTransform.cs

@@ -12,11 +12,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_texture_transform glTF TextureInfo Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             var tex = ctx.FindClass(ExtensionRootClassName);
 

+ 2 - 6
build/SharpGLTF.CodeGen/Ext.KHR_Transmission.cs

@@ -12,13 +12,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_materials_transmission glTF Material Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
-            ctx.IgnoredByCodeEmitter("Material Normal Texture Info");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             yield return("ext.Transmission.g", ctx);
         }

+ 2 - 4
build/SharpGLTF.CodeGen/Ext.KHR_Unlit.cs

@@ -12,11 +12,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_materials_unlit glTF Material Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             yield return("ext.Unlit.g", ctx);
         }

+ 2 - 5
build/SharpGLTF.CodeGen/Ext.KHR_Volume.cs

@@ -11,12 +11,9 @@ namespace SharpGLTF
 
         private const string ExtensionRootClassName = "KHR_materials_volume glTF Material Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
-            ctx.IgnoredByCodeEmitter("Texture Info");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             var cls = ctx.FindClass(ExtensionRootClassName);
 

+ 4 - 7
build/SharpGLTF.CodeGen/Ext.KHR_XmpJsonLD.cs

@@ -17,7 +17,7 @@ namespace SharpGLTF
         private const string ExtensionRootClassName = "KHR_xmp_json_ld glTF Document Extension";
         private const string ExtensionPropClassName = "KHR_xmp_json_ld glTF Extension";
 
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
             yield return ("ext.XmpJsonLinkedData.Root.g", ProcessModel());
             yield return ("ext.XmpJsonLinkedData.Prop.g", ProcessProps());
@@ -25,9 +25,7 @@ namespace SharpGLTF
 
         private static SchemaType.Context ProcessModel()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(RootSchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(RootSchemaUri);
 
             var packets = ctx.FindClass(ExtensionRootClassName).GetField("packets");
 
@@ -36,9 +34,8 @@ namespace SharpGLTF
 
         private static SchemaType.Context ProcessProps()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(PropSchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
-            ctx.IgnoredByCodeEmitter("glTF Child of Root Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(PropSchemaUri);
+
             return ctx;
         }
 

+ 2 - 3
build/SharpGLTF.CodeGen/Ext.MSFT_TextureDDS.cs

@@ -9,10 +9,9 @@ namespace SharpGLTF
     class TextureDDSExtension : SchemaProcessor
     {
         private static string SchemaUri => Constants.VendorExtensionPath("MSFT_texture_dds", "glTF.MSFT_texture_dds.schema.json");
-        public override IEnumerable<(string, SchemaType.Context)> Process()
+        public override IEnumerable<(string, SchemaType.Context)> ReadSchema()
         {
-            var ctx = SchemaProcessing.LoadSchemaContext(SchemaUri);
-            ctx.IgnoredByCodeEmitter("glTF Property");
+            var ctx = SchemaProcessing.LoadExtensionSchemaContext(SchemaUri);
 
             yield return ("ext.MSFT.TextureDDS.g", ctx);
         }

+ 1 - 1
build/SharpGLTF.CodeGen/MainSchemaProcessor.cs

@@ -10,7 +10,7 @@ namespace SharpGLTF
 {
     class MainSchemaProcessor : SchemaProcessor
     {
-        public override IEnumerable<(string TargetFileName, SchemaType.Context Schema)> Process()
+        public override IEnumerable<(string TargetFileName, SchemaType.Context Schema)> ReadSchema()
         {
             // load and process schema
             var ctx = SchemaProcessing.LoadSchemaContext(Constants.MainSchemaFile);

+ 1 - 1
build/SharpGLTF.CodeGen/Program.cs

@@ -74,7 +74,7 @@ namespace SharpGLTF
 
             foreach (var processor in processors)
             {
-                foreach (var (targetFileName, schema) in processor.Process())
+                foreach (var (targetFileName, schema) in processor.ReadSchema())
                 {
                     System.Console.WriteLine($"Emitting {targetFileName}...");
 

+ 7 - 0
build/SharpGLTF.CodeGen/SchemaProcessing.cs

@@ -18,6 +18,13 @@ namespace SharpGLTF
     {
         #region schema loader
 
+        public static SchemaType.Context LoadExtensionSchemaContext(string srcSchema)
+        {
+            var context = LoadSchemaContext(srcSchema);
+            context.IgnoredByCodeEmittierMainSchema();
+            return context;
+        }
+
         public static SchemaType.Context LoadSchemaContext(string srcSchema)
         {
             var schema = LoadSchema(srcSchema);

+ 1 - 1
build/SharpGLTF.CodeGen/SchemaProcessor.cs

@@ -8,7 +8,7 @@ namespace SharpGLTF
     {
         public virtual string GetTargetProject() { return Constants.TargetProjectDirectory; }
 
-        public abstract IEnumerable<(string TargetFileName, SchemaReflection.SchemaType.Context Schema)> Process();
+        public abstract IEnumerable<(string TargetFileName, SchemaReflection.SchemaType.Context Schema)> ReadSchema();
 
         public abstract void PrepareTypes(CodeGen.CSharpEmitter newEmitter, SchemaReflection.SchemaType.Context ctx);
     }

+ 11 - 1
build/SharpGLTF.CodeGen/SchemaReflection/SchemaTypesContext.cs

@@ -93,9 +93,19 @@ namespace SharpGLTF.SchemaReflection
             {
                 var ct = Classes.FirstOrDefault(item => item.PersistentName == persistentName);
 
-                if (ct != null) ct.IgnoredByEmitter = true;
+                if (ct != null) ct.IgnoredByEmitter = true;            
             }
 
+            public void IgnoredByCodeEmittierMainSchema()
+            {
+                IgnoredByCodeEmitter("glTF Property");                
+                IgnoredByCodeEmitter("glTF Child of Root Property");
+                IgnoredByCodeEmitter("Texture Info");
+                IgnoredByCodeEmitter("Material Normal Texture Info");
+            }
+
+
+
             #endregion
         }
     }