diff --git a/src/ObjCommon/XModel/Gltf/JsonGltf.h b/src/ObjCommon/XModel/Gltf/JsonGltf.h index 09a3c7f8..bf76190b 100644 --- a/src/ObjCommon/XModel/Gltf/JsonGltf.h +++ b/src/ObjCommon/XModel/Gltf/JsonGltf.h @@ -18,6 +18,74 @@ namespace gltf NLOHMANN_DEFINE_TYPE_EXTENSION(JsonAsset, version, generator); + class JsonPunctualSpotLightProperties + { + public: + std::optional innerConeAngle; + std::optional outerConeAngle; + }; + + NLOHMANN_DEFINE_TYPE_EXTENSION(JsonPunctualSpotLightProperties, innerConeAngle, outerConeAngle); + + enum class JsonPunctualLightType + { + DIRECTIONAL, + POINT, + SPOT + }; + + NLOHMANN_JSON_SERIALIZE_ENUM(JsonPunctualLightType, + { + {JsonPunctualLightType::DIRECTIONAL, "directional"}, + {JsonPunctualLightType::POINT, "point" }, + {JsonPunctualLightType::SPOT, "spot" }, + }); + + class JsonPunctualLight + { + public: + std::optional> color; + std::optional intensity; + std::optional name; + std::optional range; + std::optional spot; + JsonPunctualLightType type; + }; + + NLOHMANN_DEFINE_TYPE_EXTENSION(JsonPunctualLight, color, intensity, name, range, spot, type); + + class JsonPunctualLightsExt + { + public: + std::optional> lights; + }; + + NLOHMANN_DEFINE_TYPE_EXTENSION(JsonPunctualLightsExt, lights); + + class JsonExtension + { + public: + std::optional KHR_lights_punctual; + }; + + NLOHMANN_DEFINE_TYPE_EXTENSION(JsonExtension, KHR_lights_punctual); + + class JsonPunctualLightIndex + { + public: + int light; + }; + + NLOHMANN_DEFINE_TYPE_EXTENSION(JsonPunctualLightIndex, light); + + class JsonNodeExt + { + public: + std::optional KHR_lights_punctual; + }; + + NLOHMANN_DEFINE_TYPE_EXTENSION(JsonNodeExt, KHR_lights_punctual); + class JsonNode { public: @@ -29,9 +97,11 @@ namespace gltf std::optional> children; std::optional skin; std::optional mesh; + + std::optional extensions; }; - NLOHMANN_DEFINE_TYPE_EXTENSION(JsonNode, name, translation, rotation, scale, matrix, children, skin, mesh); + NLOHMANN_DEFINE_TYPE_EXTENSION(JsonNode, name, translation, rotation, scale, matrix, children, skin, mesh, extensions); class JsonBuffer { @@ -326,6 +396,7 @@ namespace gltf { public: JsonAsset asset; + std::optional extensions; std::optional scene; std::optional> scenes; std::optional> nodes; @@ -341,5 +412,5 @@ namespace gltf }; NLOHMANN_DEFINE_TYPE_EXTENSION( - JsonRoot, asset, scene, scenes, nodes, animations, materials, meshes, textures, images, skins, accessors, bufferViews, buffers); + JsonRoot, asset, extensions, scene, scenes, nodes, animations, materials, meshes, textures, images, skins, accessors, bufferViews, buffers); } // namespace gltf