Browse Source

Fix Q1 MDL group frame loading, e.g. Q1 progs/flame2.mdl

Garux 4 years ago
parent
commit
856547be23
2 changed files with 4 additions and 2 deletions
  1. 3 1
      code/AssetLib/MDL/MDLFileData.h
  2. 1 1
      code/AssetLib/MDL/MDLLoader.cpp

+ 3 - 1
code/AssetLib/MDL/MDLFileData.h

@@ -696,6 +696,8 @@ struct GroupFrame
     //! 0 = simple frame, !0 = group frame
     int32_t type;
 
+    int32_t numframes;
+
     //! Minimum vertex for all single frames
     Vertex min;
 
@@ -703,7 +705,7 @@ struct GroupFrame
     Vertex max;
 
     //! Time for all single frames
-    float *time;
+    float time;    // float[numframes]
 
     //! List of single frames
     SimpleFrame *frames;

+ 1 - 1
code/AssetLib/MDL/MDLLoader.cpp

@@ -428,7 +428,7 @@ void MDLImporter::InternReadFile_Quake1() {
     } else {
         // get the first frame in the group
         BE_NCONST MDL::GroupFrame *pcFrames2 = (BE_NCONST MDL::GroupFrame *)pcFrames;
-        pcFirstFrame = &(pcFrames2->frames[0]);
+        pcFirstFrame = (MDL::SimpleFrame *)( &pcFrames2->time + pcFrames2->numframes );
     }
     BE_NCONST MDL::Vertex *pcVertices = (BE_NCONST MDL::Vertex *)((pcFirstFrame->name) + sizeof(pcFirstFrame->name));
     VALIDATE_FILE_SIZE((const unsigned char *)(pcVertices + pcHeader->num_verts));