diff options
| author | Ray <[email protected]> | 2021-03-02 02:03:52 +0100 |
|---|---|---|
| committer | Ray <[email protected]> | 2021-03-02 02:03:52 +0100 |
| commit | 01b3c97c42d366522a7e82fab2b0ac47e350ee77 (patch) | |
| tree | 43d86ca197620c489eb8e58039f29f09bc25a139 /src/models.c | |
| parent | 8df56c5843778fa9061a51e4f1f5888192fc0c1b (diff) | |
| download | raylib-01b3c97c42d366522a7e82fab2b0ac47e350ee77.tar.gz raylib-01b3c97c42d366522a7e82fab2b0ac47e350ee77.zip | |
Some misc tweaks
Diffstat (limited to 'src/models.c')
| -rw-r--r-- | src/models.c | 60 |
1 files changed, 29 insertions, 31 deletions
diff --git a/src/models.c b/src/models.c index b3cd625e..00e4c1e3 100644 --- a/src/models.c +++ b/src/models.c @@ -4019,7 +4019,7 @@ static bool GltfReadFloat(cgltf_accessor* acc, unsigned int index, float* variab } // LoadGLTF loads in animation data from given filename -static ModelAnimation* LoadGLTFModelAnimations(const char *fileName, int *animCount) +static ModelAnimation *LoadGLTFModelAnimations(const char *fileName, int *animCount) { /*********************************************************************************** @@ -4032,6 +4032,7 @@ static ModelAnimation* LoadGLTFModelAnimations(const char *fileName, int *animCo - ... *************************************************************************************/ + // glTF file loading unsigned int dataSize = 0; unsigned char *fileData = LoadFileData(fileName, &dataSize); @@ -4081,6 +4082,7 @@ static ModelAnimation* LoadGLTFModelAnimations(const char *fileName, int *animCo cgltf_animation_channel* channel = animation->channels + i; int frameCounts = (int)channel->sampler->input->count; float lastFrameTime = 0.0f; + if (GltfReadFloat(channel->sampler->input, frameCounts - 1, &lastFrameTime, 1)) { animationDuration = fmaxf(lastFrameTime, animationDuration); @@ -4137,7 +4139,7 @@ static ModelAnimation* LoadGLTFModelAnimations(const char *fileName, int *animCo for (unsigned int j = 0; j < sampler->input->count; j++) { float inputFrameTime; - if (GltfReadFloat(sampler->input, j, (float*)&inputFrameTime, 1)) + if (GltfReadFloat(sampler->input, j, (float *)&inputFrameTime, 1)) { if (frameTime < inputFrameTime) { @@ -4146,59 +4148,53 @@ static ModelAnimation* LoadGLTFModelAnimations(const char *fileName, int *animCo outputMax = j; float previousInputTime = 0.0f; - if (GltfReadFloat(sampler->input, outputMin, (float*)&previousInputTime, 1)) + if (GltfReadFloat(sampler->input, outputMin, (float *)&previousInputTime, 1)) { - lerpPercent = (frameTime - previousInputTime) / (inputFrameTime - previousInputTime); + lerpPercent = (frameTime - previousInputTime)/(inputFrameTime - previousInputTime); } + break; } - } else { - break; - } + } + else break; } // If the current transformation has no information for the current frame time point - if (shouldSkipFurtherTransformation) { - continue; - } + if (shouldSkipFurtherTransformation) continue; - if (channel->target_path == cgltf_animation_path_type_translation) { + if (channel->target_path == cgltf_animation_path_type_translation) + { Vector3 translationStart; Vector3 translationEnd; - bool success = GltfReadFloat(sampler->output, outputMin, (float*)&translationStart, 3); - success = GltfReadFloat(sampler->output, outputMax, (float*)&translationEnd, 3) || success; + bool success = GltfReadFloat(sampler->output, outputMin, (float *)&translationStart, 3); + success = GltfReadFloat(sampler->output, outputMax, (float *)&translationEnd, 3) || success; - if (success) - { - output->framePoses[frame][boneId].translation = Vector3Lerp(translationStart, translationEnd, lerpPercent); - } + if (success) output->framePoses[frame][boneId].translation = Vector3Lerp(translationStart, translationEnd, lerpPercent); } - if (channel->target_path == cgltf_animation_path_type_rotation) { + if (channel->target_path == cgltf_animation_path_type_rotation) + { Quaternion rotationStart; Quaternion rotationEnd; - bool success = GltfReadFloat(sampler->output, outputMin, (float*)&rotationStart, 4); - success = GltfReadFloat(sampler->output, outputMax, (float*)&rotationEnd, 4) || success; + bool success = GltfReadFloat(sampler->output, outputMin, (float *)&rotationStart, 4); + success = GltfReadFloat(sampler->output, outputMax, (float *)&rotationEnd, 4) || success; if (success) { output->framePoses[frame][boneId].rotation = QuaternionLerp(rotationStart, rotationEnd, lerpPercent); output->framePoses[frame][boneId].rotation = QuaternionNormalize(output->framePoses[frame][boneId].rotation); - } } - if (channel->target_path == cgltf_animation_path_type_scale) { + if (channel->target_path == cgltf_animation_path_type_scale) + { Vector3 scaleStart; Vector3 scaleEnd; - bool success = GltfReadFloat(sampler->output, outputMin, (float*)&scaleStart, 3); - success = GltfReadFloat(sampler->output, outputMax, (float*)&scaleEnd, 3) || success; + bool success = GltfReadFloat(sampler->output, outputMin, (float *)&scaleStart, 3); + success = GltfReadFloat(sampler->output, outputMax, (float *)&scaleEnd, 3) || success; - if (success) - { - output->framePoses[frame][boneId].scale = Vector3Lerp(scaleStart, scaleEnd, lerpPercent); - } + if (success) output->framePoses[frame][boneId].scale = Vector3Lerp(scaleStart, scaleEnd, lerpPercent); } } } @@ -4206,15 +4202,17 @@ static ModelAnimation* LoadGLTFModelAnimations(const char *fileName, int *animCo // Build frameposes for (int frame = 0; frame < output->frameCount; frame++) { - bool* completedBones = RL_CALLOC(output->boneCount, sizeof(bool)); + bool *completedBones = RL_CALLOC(output->boneCount, sizeof(bool)); int numberCompletedBones = 0; - while (numberCompletedBones < output->boneCount) { + while (numberCompletedBones < output->boneCount) + { for (int i = 0; i < output->boneCount; i++) { if (completedBones[i]) continue; - if (output->bones[i].parent < 0) { + if (output->bones[i].parent < 0) + { completedBones[i] = true; numberCompletedBones++; continue; |
