diff --git a/tiny_gltf.h b/tiny_gltf.h index d3a1748..a0edd76 100644 --- a/tiny_gltf.h +++ b/tiny_gltf.h @@ -1038,6 +1038,7 @@ class Node { std::string name; int skin; int mesh; + int light; // light source index (KHR_lights_punctual) std::vector children; std::vector rotation; // length must be 0 or 4 std::vector scale; // length must be 0 or 3 @@ -5066,6 +5067,22 @@ static bool ParseNode(Node *node, std::string *err, const detail::json &o, } } + // KHR_lights_punctual: parse light source reference + int light = -1; + if (node->extensions.count("KHR_lights_punctual") != 0) { + auto const& light_ext = node->extensions["KHR_lights_punctual"]; + if (light_ext.Has("light")) { + light = light_ext.Get("light").GetNumberAsInt(); + } else { + if (err) { + *err += "Node has extension KHR_lights_punctual, but does not reference " + "a light source.\n"; + } + return false; + } + } + node->light = light; + return true; }