From f76734fc5059a58d6026d17ff0da985d8a228d5b Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 18 Dec 2024 11:43:43 +0100 Subject: [PATCH] REVIEWED: `UpdateModelAnimationBones()`, break on first mesh found and formating --- src/rmodels.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/rmodels.c b/src/rmodels.c index cf799aa58f3f..43997c318519 100644 --- a/src/rmodels.c +++ b/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;