diff --git a/tiny_gltf.h b/tiny_gltf.h index 36b10d1..4f26438 100644 --- a/tiny_gltf.h +++ b/tiny_gltf.h @@ -526,10 +526,12 @@ struct AnimationChannel { // "weights"] Value extras; ExtensionMap extensions; + ExtensionMap target_extensions; // Filled when SetStoreOriginalJSONForExtrasAndExtensions is enabled. std::string extras_json_string; std::string extensions_json_string; + std::string target_extensions_json_string; AnimationChannel() : sampler(-1), target_node(-1) {} DEFAULT_METHODS(AnimationChannel) @@ -4715,6 +4717,13 @@ static bool ParseAnimationChannel( } return false; } + ParseExtensionsProperty(&channel->target_extensions, err, target_object); + if (store_original_json_for_extras_and_extensions) { + json_const_iterator it; + if (FindMember(target_object, "extensions", it)) { + channel->target_extensions_json_string = JsonToString(GetValue(it)); + } + } } channel->sampler = samplerIndex; @@ -6369,6 +6378,8 @@ static void SerializeGltfAnimationChannel(AnimationChannel &channel, json &o) { SerializeNumberProperty("node", channel.target_node, target); SerializeStringProperty("path", channel.target_path, target); + SerializeExtensionMap(channel.target_extensions, target); + JsonAddMember(o, "target", std::move(target)); }