diff --git a/components/nifosg/controller.hpp b/components/nifosg/controller.hpp index 17ad9564c0..a29fabefd0 100644 --- a/components/nifosg/controller.hpp +++ b/components/nifosg/controller.hpp @@ -60,11 +60,20 @@ namespace NifOsg ValueInterpolator() = default; - template - ValueInterpolator(typename std::enable_if_t< - std::is_same::value, - const Nif::NiFloatInterpolator - > * interpolator) : mDefaultVal(interpolator->defaultVal) + template< + class T, + typename = std::enable_if_t< + std::conjunction_v< + std::disjunction< + std::is_same, + std::is_same + >, + std::is_same + >, + T + > + > + ValueInterpolator(const T* interpolator) : mDefaultVal(interpolator->defaultVal) { if (interpolator->data.empty()) return; @@ -76,22 +85,6 @@ namespace NifOsg } }; - template - ValueInterpolator(typename std::enable_if_t< - std::is_same::value, - const Nif::NiPoint3Interpolator - > * interpolator) : mDefaultVal(interpolator->defaultVal) - { - if (interpolator->data.empty()) - return; - mKeys = interpolator->data->mKeyList; - if (mKeys) - { - mLastLowKey = mKeys->mKeys.end(); - mLastHighKey = mKeys->mKeys.end(); - } - } - ValueInterpolator(std::shared_ptr keys, ValueT defaultVal = ValueT()) : mKeys(keys) , mDefaultVal(defaultVal)