diff --git a/src/MovingWindowFilter.cc b/src/MovingWindowFilter.cc index 87f787104..e8232b6d1 100644 --- a/src/MovingWindowFilter.cc +++ b/src/MovingWindowFilter.cc @@ -96,9 +96,45 @@ bool MovingWindowFilter::WindowFilled() const template T MovingWindowFilter::Value() const { - auto value = - this->sum / static_cast(this->samples); - return static_cast(value); + if (std::is_integral_v) + { + auto value = this->sum / this->samples; + return T(value); + } + else + { + auto value = this->sum / static_cast(this->samples); + return T(value); + } +} + +////////////////////////////////////////////////// +template<> +ignition::math::Vector3i +MovingWindowFilter::Value() const +{ + auto value = this->sum / this->samples; + return value; +} + +////////////////////////////////////////////////// +template<> +ignition::math::Vector3f +MovingWindowFilter::Value() const +{ + ignition::math::Vector3f divisor; + divisor = static_cast(this->samples); + auto value = this->sum / divisor; + return value; +} + +////////////////////////////////////////////////// +template<> +ignition::math::Vector3d +MovingWindowFilter::Value() const +{ + auto value = this->sum / this->samples; + return value; } template class MovingWindowFilter;