Browse Source

REVIEWED: `UpdateModelAnimationBones()`, break on first mesh found and formating

Ray 8 months ago
parent
commit
f76734fc50
1 changed files with 8 additions and 6 deletions
  1. 8 6
      src/rmodels.c

+ 8 - 6
src/rmodels.c

@@ -2281,6 +2281,7 @@ void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame)
                 if (firstMeshWithBones == -1)
                 {
                     firstMeshWithBones = i;
+                    break;
                 }
             }
         }
@@ -2314,18 +2315,17 @@ void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame)
             model.meshes[firstMeshWithBones].boneMatrices[boneId] = boneMatrix;
         }
 
-        // Update remaining meshes with bones (Use Deep copy because shallow copy results in double free with 'UnloadModel()')
+        // Update remaining meshes with bones
+        // NOTE: Using deep copy because shallow copy results in double free with 'UnloadModel()'
         if (firstMeshWithBones != -1)
         {
             for (int i = firstMeshWithBones + 1; i < model.meshCount; i++)
             {
                 if (model.meshes[i].boneMatrices)
                 {
-                    memcpy(
-                        model.meshes[i].boneMatrices,
+                    memcpy(model.meshes[i].boneMatrices,
                         model.meshes[firstMeshWithBones].boneMatrices,
-                        model.meshes[i].boneCount * sizeof(model.meshes[i].boneMatrices[0])
-                    );
+                        model.meshes[i].boneCount * sizeof(model.meshes[i].boneMatrices[0]));
                 }
             }
         }
@@ -2338,6 +2338,7 @@ void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame)
 void UpdateModelAnimation(Model model, ModelAnimation anim, int frame)
 {
     UpdateModelAnimationBones(model,anim,frame);
+    
     for (int m = 0; m < model.meshCount; m++)
     {
         Mesh mesh = model.meshes[m];
@@ -2346,8 +2347,9 @@ void UpdateModelAnimation(Model model, ModelAnimation anim, int frame)
         int boneId = 0;
         int boneCounter = 0;
         float boneWeight = 0.0;
-        bool updated = false;           // Flag to check when anim vertex information is updated
+        bool updated = false; // Flag to check when anim vertex information is updated
         const int vValues = mesh.vertexCount*3;
+        
         for (int vCounter = 0; vCounter < vValues; vCounter += 3)
         {
             mesh.animVertices[vCounter] = 0;