| 
																	
																	
																	
																 | 
																@ -1,7 +1,7 @@ | 
															
														
														
													
														
															
																 | 
																 | 
																/** | 
																 | 
																 | 
																/** | 
															
														
														
													
														
															
																 | 
																 | 
																 * cgltf - a single-file glTF 2.0 parser written in C99. | 
																 | 
																 | 
																 * cgltf - a single-file glTF 2.0 parser written in C99. | 
															
														
														
													
														
															
																 | 
																 | 
																 * | 
																 | 
																 | 
																 * | 
															
														
														
													
														
															
																 | 
																 | 
																 * Version: 1.13 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																 * Version: 1.14 | 
															
														
														
													
														
															
																 | 
																 | 
																 * | 
																 | 
																 | 
																 * | 
															
														
														
													
														
															
																 | 
																 | 
																 * Website: https://github.com/jkuhlmann/cgltf | 
																 | 
																 | 
																 * Website: https://github.com/jkuhlmann/cgltf | 
															
														
														
													
														
															
																 | 
																 | 
																 * | 
																 | 
																 | 
																 * | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -395,6 +395,8 @@ typedef struct cgltf_texture | 
															
														
														
													
														
															
																 | 
																 | 
																	cgltf_sampler* sampler; | 
																 | 
																 | 
																	cgltf_sampler* sampler; | 
															
														
														
													
														
															
																 | 
																 | 
																	cgltf_bool has_basisu; | 
																 | 
																 | 
																	cgltf_bool has_basisu; | 
															
														
														
													
														
															
																 | 
																 | 
																	cgltf_image* basisu_image; | 
																 | 
																 | 
																	cgltf_image* basisu_image; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	cgltf_bool has_webp; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	cgltf_image* webp_image; | 
															
														
														
													
														
															
																 | 
																 | 
																	cgltf_extras extras; | 
																 | 
																 | 
																	cgltf_extras extras; | 
															
														
														
													
														
															
																 | 
																 | 
																	cgltf_size extensions_count; | 
																 | 
																 | 
																	cgltf_size extensions_count; | 
															
														
														
													
														
															
																 | 
																 | 
																	cgltf_extension* extensions; | 
																 | 
																 | 
																	cgltf_extension* extensions; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -1697,7 +1699,20 @@ cgltf_result cgltf_validate(cgltf_data* data) | 
															
														
														
													
														
															
																 | 
																 | 
																	{ | 
																 | 
																 | 
																	{ | 
															
														
														
													
														
															
																 | 
																 | 
																		if (data->nodes[i].weights && data->nodes[i].mesh) | 
																 | 
																 | 
																		if (data->nodes[i].weights && data->nodes[i].mesh) | 
															
														
														
													
														
															
																 | 
																 | 
																		{ | 
																 | 
																 | 
																		{ | 
															
														
														
													
														
															
																 | 
																 | 
																			CGLTF_ASSERT_IF (data->nodes[i].mesh->primitives_count && data->nodes[i].mesh->primitives[0].targets_count != data->nodes[i].weights_count, cgltf_result_invalid_gltf); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			CGLTF_ASSERT_IF(data->nodes[i].mesh->primitives_count && data->nodes[i].mesh->primitives[0].targets_count != data->nodes[i].weights_count, cgltf_result_invalid_gltf); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if (data->nodes[i].has_mesh_gpu_instancing) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			CGLTF_ASSERT_IF(data->nodes[i].mesh == NULL, cgltf_result_invalid_gltf); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			CGLTF_ASSERT_IF(data->nodes[i].mesh_gpu_instancing.attributes_count == 0, cgltf_result_invalid_gltf); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			cgltf_accessor* first = data->nodes[i].mesh_gpu_instancing.attributes[0].data; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			for (cgltf_size k = 0; k < data->nodes[i].mesh_gpu_instancing.attributes_count; ++k) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				CGLTF_ASSERT_IF(data->nodes[i].mesh_gpu_instancing.attributes[k].data->count != first->count, cgltf_result_invalid_gltf); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			} | 
															
														
														
													
														
															
																 | 
																 | 
																		} | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -4538,6 +4553,34 @@ static int cgltf_parse_json_texture(cgltf_options* options, jsmntok_t const* tok | 
															
														
														
													
														
															
																 | 
																 | 
																						} | 
																 | 
																 | 
																						} | 
															
														
														
													
														
															
																 | 
																 | 
																					} | 
																 | 
																 | 
																					} | 
															
														
														
													
														
															
																 | 
																 | 
																				} | 
																 | 
																 | 
																				} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				else if (cgltf_json_strcmp(tokens + i, json_chunk, "EXT_texture_webp") == 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					out_texture->has_webp = 1; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					++i; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					CGLTF_CHECK_TOKTYPE(tokens[i], JSMN_OBJECT); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					int num_properties = tokens[i].size; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					++i; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					for (int t = 0; t < num_properties; ++t) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						CGLTF_CHECK_KEY(tokens[i]); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						if (cgltf_json_strcmp(tokens + i, json_chunk, "source") == 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																							++i; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																							out_texture->webp_image = CGLTF_PTRINDEX(cgltf_image, cgltf_json_to_int(tokens + i, json_chunk)); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																							++i; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						else | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																							i = cgltf_skip_json(tokens, i + 1); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						if (i < 0) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						{ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																							return i; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																					} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				} | 
															
														
														
													
														
															
																 | 
																 | 
																				else | 
																 | 
																 | 
																				else | 
															
														
														
													
														
															
																 | 
																 | 
																				{ | 
																 | 
																 | 
																				{ | 
															
														
														
													
														
															
																 | 
																 | 
																					i = cgltf_parse_json_unprocessed_extension(options, tokens, i, json_chunk, &(out_texture->extensions[out_texture->extensions_count++])); | 
																 | 
																 | 
																					i = cgltf_parse_json_unprocessed_extension(options, tokens, i, json_chunk, &(out_texture->extensions[out_texture->extensions_count++])); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -6548,6 +6591,7 @@ static int cgltf_fixup_pointers(cgltf_data* data) | 
															
														
														
													
														
															
																 | 
																 | 
																	{ | 
																 | 
																 | 
																	{ | 
															
														
														
													
														
															
																 | 
																 | 
																		CGLTF_PTRFIXUP(data->textures[i].image, data->images, data->images_count); | 
																 | 
																 | 
																		CGLTF_PTRFIXUP(data->textures[i].image, data->images, data->images_count); | 
															
														
														
													
														
															
																 | 
																 | 
																		CGLTF_PTRFIXUP(data->textures[i].basisu_image, data->images, data->images_count); | 
																 | 
																 | 
																		CGLTF_PTRFIXUP(data->textures[i].basisu_image, data->images, data->images_count); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		CGLTF_PTRFIXUP(data->textures[i].webp_image, data->images, data->images_count); | 
															
														
														
													
														
															
																 | 
																 | 
																		CGLTF_PTRFIXUP(data->textures[i].sampler, data->samplers, data->samplers_count); | 
																 | 
																 | 
																		CGLTF_PTRFIXUP(data->textures[i].sampler, data->samplers, data->samplers_count); | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																	
																 | 
																
 |