Browse Source

add cesium_primitive_outline extension

Bert Temme 2 years ago
parent
commit
9da78b8a7d

+ 30 - 0
build/SharpGLTF.CodeGen/Ext.CESIUM_primitive_outline.cs

@@ -0,0 +1,30 @@
+using SharpGLTF.CodeGen;
+using SharpGLTF.SchemaReflection;
+using System.Collections.Generic;
+
+namespace SharpGLTF
+{
+    class CesiumPrimitiveOutlineExtension : SchemaProcessor
+    {
+        private static string RootSchemaUri => Constants.VendorExtensionPath("CESIUM_primitive_outline", "primitive.CESIUM_primitive_outline.schema.json");
+
+        public override void PrepareTypes(CSharpEmitter newEmitter, SchemaType.Context ctx)
+        {
+            newEmitter.SetRuntimeName("Ext.CESIUM_primitive_outline glTF extension", "CesiumPrimitiveOutline");
+        }
+
+        public override IEnumerable<(string TargetFileName, SchemaType.Context Schema)> Process()
+        {
+            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");
+
+            return ctx;
+        }
+    }
+}

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

@@ -41,7 +41,9 @@ namespace SharpGLTF
             processors.Add(new TransmissionExtension());
             processors.Add(new TransmissionExtension());
             processors.Add(new EmissiveStrengthExtension());
             processors.Add(new EmissiveStrengthExtension());
             processors.Add(new SpecularGlossinessExtension());
             processors.Add(new SpecularGlossinessExtension());
-            
+
+            // cesium outlines
+            processors.Add(new CesiumPrimitiveOutlineExtension());
 
 
             // lights
             // lights
             processors.Add(new LightsPunctualExtension());
             processors.Add(new LightsPunctualExtension());

+ 56 - 0
src/SharpGLTF.Core/Schema2/Generated/Ext.CESIUM_primitive_outline.g.cs

@@ -0,0 +1,56 @@
+// <auto-generated/>
+
+//------------------------------------------------------------------------------------------------
+//      This file has been programatically generated; DON´T EDIT!
+//------------------------------------------------------------------------------------------------
+
+#pragma warning disable SA1001
+#pragma warning disable SA1027
+#pragma warning disable SA1028
+#pragma warning disable SA1121
+#pragma warning disable SA1205
+#pragma warning disable SA1309
+#pragma warning disable SA1402
+#pragma warning disable SA1505
+#pragma warning disable SA1507
+#pragma warning disable SA1508
+#pragma warning disable SA1652
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Numerics;
+using System.Text.Json;
+
+namespace SharpGLTF.Schema2
+{
+	using Collections;
+
+	/// <summary>
+	/// glTF extension for indicating that some edges of a primitive's triangles should be outlined.
+	/// </summary>
+	partial class CESIUM_primitive_outlineglTFprimitiveextension : ExtraProperties
+	{
+	
+		private Int32? _indices;
+		
+	
+		protected override void SerializeProperties(Utf8JsonWriter writer)
+		{
+			base.SerializeProperties(writer);
+			SerializeProperty(writer, "indices", _indices);
+		}
+	
+		protected override void DeserializeProperty(string jsonPropertyName, ref Utf8JsonReader reader)
+		{
+			switch (jsonPropertyName)
+			{
+				case "indices": _indices = DeserializePropertyValue<Int32?>(ref reader); break;
+				default: base.DeserializeProperty(jsonPropertyName,ref reader); break;
+			}
+		}
+	
+	}
+
+}

+ 2 - 0
src/SharpGLTF.Core/Schema2/gltf.ExtensionsFactory.cs

@@ -49,6 +49,8 @@ namespace SharpGLTF.Schema2
             RegisterExtension<ModelRoot, AgiRootStkMetadata>("AGI_stk_metadata");
             RegisterExtension<ModelRoot, AgiRootStkMetadata>("AGI_stk_metadata");
             RegisterExtension<Node, AgiNodeArticulations>("AGI_articulations");
             RegisterExtension<Node, AgiNodeArticulations>("AGI_articulations");
             RegisterExtension<Node, AgiNodeStkMetadata>("AGI_stk_metadata");
             RegisterExtension<Node, AgiNodeStkMetadata>("AGI_stk_metadata");
+
+            RegisterExtension<ModelRoot, CESIUM_primitive_outlineglTFprimitiveextension>("CESIUM_primitive_outline");
         }
         }
 
 
         #endregion
         #endregion