diff --git a/tiny_gltf.h b/tiny_gltf.h index 0f69ad2..54e98b7 100644 --- a/tiny_gltf.h +++ b/tiny_gltf.h @@ -1062,6 +1062,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 @@ -5090,6 +5091,20 @@ 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 { + *err += "Node has extension KHR_lights_punctual, but does not reference " + "a light source.\n"; + return false; + } + } + node->light = light; + return true; }