From 8ac264f133461ebbe9a9a9fcdad90069d5a43795 Mon Sep 17 00:00:00 2001 From: WPMGPRoSToTeMa Date: Fri, 9 Sep 2016 00:55:07 +0300 Subject: [PATCH] Fixed optimization-dependent model bounds computation in R_GetStudioBounds (actually in R_StudioCalcBonePosition) (related to #239) --- rehlds/engine/r_studio.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/rehlds/engine/r_studio.cpp b/rehlds/engine/r_studio.cpp index 96ccbb6..2dc8219 100644 --- a/rehlds/engine/r_studio.cpp +++ b/rehlds/engine/r_studio.cpp @@ -434,11 +434,19 @@ void R_StudioCalcBonePosition(int frame, float s, mstudiobone_t *pbone, mstudioa // and there's more data in the span if (panimvalue->num.valid > k + 1) { +#ifdef REHLDS_FIXES + pos[j] += ((long double)panimvalue[k + 1].value * (1.0f - s) + s * (long double)panimvalue[k + 2].value) * pbone->scale[j]; +#else // REHLDS_FIXES pos[j] += (panimvalue[k + 1].value * (1.0f - s) + s * panimvalue[k + 2].value) * pbone->scale[j]; +#endif // REHLDS_FIXES } else { +#ifdef REHLDS_FIXES + pos[j] += (long double)panimvalue[k + 1].value * pbone->scale[j]; +#else // REHLDS_FIXES pos[j] += panimvalue[k + 1].value * pbone->scale[j]; +#endif // REHLDS_FIXES } } else @@ -446,11 +454,19 @@ void R_StudioCalcBonePosition(int frame, float s, mstudiobone_t *pbone, mstudioa // are we at the end of the repeating values section and there's another section with data? if (panimvalue->num.total <= k + 1) { +#ifdef REHLDS_FIXES + pos[j] += ((long double)panimvalue[panimvalue->num.valid].value * (1.0f - s) + s * (long double)panimvalue[panimvalue->num.valid + 2].value) * pbone->scale[j]; +#else // REHLDS_FIXES pos[j] += (panimvalue[panimvalue->num.valid].value * (1.0f - s) + s * panimvalue[panimvalue->num.valid + 2].value) * pbone->scale[j]; +#endif // REHLDS_FIXES } else { +#ifdef REHLDS_FIXES + pos[j] += (long double)panimvalue[panimvalue->num.valid].value * pbone->scale[j]; +#else // REHLDS_FIXES pos[j] += panimvalue[panimvalue->num.valid].value * pbone->scale[j]; +#endif // REHLDS_FIXES } } }