12 #ifndef hifi_AtRestDetector_h
13 #define hifi_AtRestDetector_h
15 #include <glm/glm.hpp>
16 #include <glm/gtx/quaternion.hpp>
18 class AtRestDetector {
21 AtRestDetector(
const glm::vec3& startPosition,
const glm::quat& startRotation);
22 void reset(
const glm::vec3& startPosition,
const glm::quat& startRotation);
25 void update(
const glm::vec3& position,
const glm::quat& startRotation);
27 void invalidate() { _isValid =
false; }
28 bool isAtRest()
const {
return _isAtRest; }
29 bool onRest()
const {
return !_lastIsAtRest && _isAtRest; }
30 bool onWake()
const {
return _lastIsAtRest && !_isAtRest; }
33 bool _isValid {
false };
34 glm::vec3 _positionAverage;
35 glm::vec3 _quatLogAverage;
36 uint64_t _lastUpdateTime { 0 };
37 float _positionVariance { 0.0f };
38 float _quatLogVariance { 0.0f };
39 bool _isAtRest {
false };
40 bool _lastIsAtRest {
false };