diff --git a/libraries/input-plugins/src/input-plugins/SixenseManager.h b/libraries/input-plugins/src/input-plugins/SixenseManager.h index b9ca9d8479..c6b938c774 100644 --- a/libraries/input-plugins/src/input-plugins/SixenseManager.h +++ b/libraries/input-plugins/src/input-plugins/SixenseManager.h @@ -24,6 +24,8 @@ #endif +#include + #include #include @@ -95,31 +97,6 @@ private: float _lastDistance; bool _useSixenseFilter = true; - template class MovingAverage { - public: - using Samples = std::list< T >; - Samples samples; - T average; - - void clear() { - samples.clear(); - } - - bool isAverageValid() const { return !samples.empty(); } - - void addSample(T sample) { - samples.push_front(sample); - int numSamples = samples.size(); - - if (numSamples < MAX_NUM_SAMPLES) { - average = (sample + average * float(numSamples - 1)) / float(numSamples); - } else { - T tail = samples.back(); - samples.pop_back(); - average = average + (sample - tail) / float(numSamples); - } - } - }; static const int MAX_NUM_AVERAGING_SAMPLES = 50; // At ~100 updates per seconds this means averaging over ~.5s using Samples = std::pair< MovingAverage< glm::vec3, MAX_NUM_AVERAGING_SAMPLES>, MovingAverage< glm::vec4, MAX_NUM_AVERAGING_SAMPLES> >; diff --git a/libraries/shared/src/SimpleMovingAverage.h b/libraries/shared/src/SimpleMovingAverage.h index 194a078194..5f4e7367fc 100644 --- a/libraries/shared/src/SimpleMovingAverage.h +++ b/libraries/shared/src/SimpleMovingAverage.h @@ -15,6 +15,7 @@ #define hifi_SimpleMovingAverage_h #include +#include class SimpleMovingAverage { public: @@ -40,4 +41,31 @@ private: float ONE_MINUS_WEIGHTING; }; + +template class MovingAverage { +public: + using Samples = std::list< T >; + Samples samples; + T average; + + void clear() { + samples.clear(); + } + + bool isAverageValid() const { return !samples.empty(); } + + void addSample(T sample) { + samples.push_front(sample); + int numSamples = samples.size(); + + if (numSamples < MAX_NUM_SAMPLES) { + average = (sample + average * (float)(numSamples - 1)) / (float)(numSamples); + } else { + T tail = samples.back(); + samples.pop_back(); + average = average + (sample - tail) / (float)(numSamples); + } + } +}; + #endif // hifi_SimpleMovingAverage_h