| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -4450,6 +4450,12 @@ static ModelAnimation *LoadModelAnimationsIQM(const char *fileName, unsigned int | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        unsigned int num_extensions, ofs_extensions; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } IQMHeader; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    typedef struct IQMJoint { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        unsigned int name; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        int parent; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        float translate[3], rotate[4], scale[3]; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } IQMJoint; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    typedef struct IQMPose { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        int parent; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        unsigned int mask; | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -4503,6 +4509,10 @@ static ModelAnimation *LoadModelAnimationsIQM(const char *fileName, unsigned int | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    //fread(framedata, iqmHeader->num_frames*iqmHeader->num_framechannels*sizeof(unsigned short), 1, iqmFile); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    memcpy(framedata, fileDataPtr + iqmHeader->ofs_frames, iqmHeader->num_frames*iqmHeader->num_framechannels*sizeof(unsigned short)); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // joints | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    IQMJoint *joints = RL_MALLOC(iqmHeader->num_joints*sizeof(IQMJoint)); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    memcpy(joints, fileDataPtr + iqmHeader->ofs_joints, iqmHeader->num_joints*sizeof(IQMJoint)); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    for (unsigned int a = 0; a < iqmHeader->num_anims; a++) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        animations[a].frameCount = anim[a].num_frames; | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -4513,7 +4523,11 @@ static ModelAnimation *LoadModelAnimationsIQM(const char *fileName, unsigned int | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        for (unsigned int j = 0; j < iqmHeader->num_poses; j++) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            strcpy(animations[a].bones[j].name, "ANIMJOINTNAME"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // If animations and skeleton are in the same file, copy bone names to anim | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            if (iqmHeader->num_joints > 0) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                memcpy(animations[a].bones[j].name, fileDataPtr + iqmHeader->ofs_text + joints[j].name, BONE_NAME_LENGTH*sizeof(char)); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            else | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                strcpy(animations[a].bones[j].name, "ANIMJOINTNAME"); // default bone name otherwise | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            animations[a].bones[j].parent = poses[j].parent; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -4627,6 +4641,7 @@ static ModelAnimation *LoadModelAnimationsIQM(const char *fileName, unsigned int | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RL_FREE(fileData); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RL_FREE(joints); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RL_FREE(framedata); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RL_FREE(poses); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RL_FREE(anim); | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |