| 
				
				
				
				 | 
			
			 | 
			
			@ -1,7 +1,7 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			/** | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			 * cgltf - a single-file glTF 2.0 parser written in C99. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			 * | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			 * Version: 1.13 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			 * Version: 1.14 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			 * | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			 * Website: https://github.com/jkuhlmann/cgltf | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			 * | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -395,6 +395,8 @@ typedef struct cgltf_texture | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				cgltf_sampler* sampler; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				cgltf_bool has_basisu; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				cgltf_image* basisu_image; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				cgltf_bool has_webp; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				cgltf_image* webp_image; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				cgltf_extras extras; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				cgltf_size extensions_count; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				cgltf_extension* extensions; | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -1697,7 +1699,20 @@ cgltf_result cgltf_validate(cgltf_data* data) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
					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 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
							{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
								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].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); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
				} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |