| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using SharpGLTF.SchemaReflection;
- namespace SharpGLTF
- {
- class LightsPunctualExtension : SchemaProcessor
- {
- private static string RootSchemaUri => KhronosExtensions.KhronosExtensionPath("KHR_lights_punctual", "glTF.KHR_lights_punctual.schema.json");
- private static string NodeSchemaUri => KhronosExtensions.KhronosExtensionPath("KHR_lights_punctual", "node.KHR_lights_punctual.schema.json");
- private const string ExtensionRootClassName = "KHR_lights_punctual glTF Document Extension";
- private const string ExtensionNodeClassName = "KHR_lights_punctual glTF Node Extension";
- 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)> ReadSchema()
- {
- yield return ("ext.ModelLightsPunctual.g", ProcessModel());
- yield return ("ext.NodeLightsPunctual.g", ProcessNode());
- }
- private static SchemaType.Context ProcessModel()
- {
- var ctx = SchemaProcessing.LoadExtensionSchemaContext(RootSchemaUri);
- ctx.FindClass(ExtensionLightClassName)
- .GetField("color")
- .SetDataType(typeof(System.Numerics.Vector3), true)
- .SetDefaultValue("Vector3.One")
- .SetItemsRange(0);
- return ctx;
- }
- private static SchemaType.Context ProcessNode()
- {
- var ctx = SchemaProcessing.LoadExtensionSchemaContext(NodeSchemaUri);
- return ctx;
- }
- public override void PrepareTypes(CodeGen.CSharpEmitter newEmitter, SchemaType.Context ctx)
- {
- newEmitter.SetRuntimeName(ExtensionLightClassName, "PunctualLight");
- newEmitter.SetRuntimeName(ExtensionLightSpotClassName, "PunctualLightSpot");
- newEmitter.SetRuntimeName(ExtensionRootClassName, "_ModelPunctualLights");
- newEmitter.SetRuntimeName(ExtensionNodeClassName, "_NodePunctualLight");
- }
- }
- }
|