Skip to content

Commit

Permalink
REVIEWED: UpdateModelAnimationBones(), break on first mesh found an…
Browse files Browse the repository at this point in the history
…d formating
  • Loading branch information
raysan5 committed Dec 18, 2024
1 parent 35c2408 commit f76734f
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions src/rmodels.c
Original file line number Diff line number Diff line change
Expand Up @@ -2281,6 +2281,7 @@ void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame)
if (firstMeshWithBones == -1)
{
firstMeshWithBones = i;
break;
}
}
}
Expand Down Expand Up @@ -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]));
}
}
}
Expand All @@ -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];
Expand All @@ -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;
Expand Down

0 comments on commit f76734f

Please sign in to comment.