| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -3939,12 +3939,12 @@ static Model LoadOBJ(const char *fileName) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            model.materialCount = materialCount; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            model.materials = (Material *)RL_CALLOC(model.materialCount, sizeof(Material)); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            TraceLog(LOG_INFO, "MODEL: model has %i material meshes", materialCount); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            TRACELOG(LOG_INFO, "MODEL: model has %i material meshes", materialCount); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        else | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            model.meshCount = 1; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            TraceLog(LOG_INFO, "MODEL: No materials, putting all meshes in a default material"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            TRACELOG(LOG_INFO, "MODEL: No materials, putting all meshes in a default material"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        model.meshes = (Mesh *)RL_CALLOC(model.meshCount, sizeof(Mesh)); | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -4452,6 +4452,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; | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -4505,6 +4511,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; | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -4515,7 +4525,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; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -4629,6 +4643,7 @@ static ModelAnimation *LoadModelAnimationsIQM(const char *fileName, unsigned int | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RL_FREE(fileData); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RL_FREE(joints); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RL_FREE(framedata); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RL_FREE(poses); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    RL_FREE(anim); | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |