| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -5380,7 +5380,8 @@ static bool GetPoseAtTimeGLTF(cgltf_interpolation_type interpolationType, cgltf_ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			     | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float t = (time - tstart)/fmax((tend - tstart), EPSILON); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float duration = fmax((tend - tstart), EPSILON); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float t = (time - tstart)/duration; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    t = (t < 0.0f)? 0.0f : t; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    t = (t > 1.0f)? 1.0f : t; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -5419,9 +5420,9 @@ static bool GetPoseAtTimeGLTF(cgltf_interpolation_type interpolationType, cgltf_ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector3 v1 = {tmp[0], tmp[1], tmp[2]}; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                cgltf_accessor_read_float(output, 3*keyframe+2, tmp, 3); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector3 tangent1 = {tmp[0], tmp[1], tmp[2]}; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                cgltf_accessor_read_float(output, 3*(keyframe+1), tmp, 3); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector3 v2 = {tmp[0], tmp[1], tmp[2]}; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                cgltf_accessor_read_float(output, 3*(keyframe+1)+1, tmp, 3); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector3 v2 = {tmp[0], tmp[1], tmp[2]}; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                cgltf_accessor_read_float(output, 3*(keyframe+1), tmp, 3); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector3 tangent2 = {tmp[0], tmp[1], tmp[2]}; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector3 *r = data; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -5462,14 +5463,25 @@ static bool GetPoseAtTimeGLTF(cgltf_interpolation_type interpolationType, cgltf_ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                cgltf_accessor_read_float(output, 3*keyframe+1, tmp, 4); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector4 v1 = {tmp[0], tmp[1], tmp[2], tmp[3]}; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                cgltf_accessor_read_float(output, 3*keyframe+2, tmp, 4); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector4 tangent1 = {tmp[0], tmp[1], tmp[2]}; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                cgltf_accessor_read_float(output, 3*(keyframe+1), tmp, 4); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector4 v2 = {tmp[0], tmp[1], tmp[2], tmp[3]}; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector4 outTangent1 = {tmp[0], tmp[1], tmp[2]}; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                cgltf_accessor_read_float(output, 3*(keyframe+1)+1, tmp, 4); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector4 tangent2 = {tmp[0], tmp[1], tmp[2]}; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector4 v2 = {tmp[0], tmp[1], tmp[2], tmp[3]}; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                cgltf_accessor_read_float(output, 3*(keyframe+1), tmp, 4); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector4 inTangent2 = {tmp[0], tmp[1], tmp[2]}; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                Vector4 *r = data; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                *r = QuaternionCubicSpline(v1, tangent1, v2, tangent2, t); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                v1 = QuaternionNormalize(v1); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                v2 = QuaternionNormalize(v2); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                if (Vector4DotProduct(v1, v2) < 0.0f) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    v2 = Vector4Negate(v2); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                outTangent1 = Vector4Scale(outTangent1, duration); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                inTangent2 = Vector4Scale(inTangent2, duration); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                *r = QuaternionCubicHermiteSpline(v1, outTangent1, v2, inTangent2, t); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            } break; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |