diff options
| -rw-r--r-- | src/input_common/motion_input.cpp | 76 | ||||
| -rw-r--r-- | src/input_common/motion_input.h | 4 | 
2 files changed, 40 insertions, 40 deletions
| diff --git a/src/input_common/motion_input.cpp b/src/input_common/motion_input.cpp index d3e736044..182a2869a 100644 --- a/src/input_common/motion_input.cpp +++ b/src/input_common/motion_input.cpp @@ -57,7 +57,7 @@ bool MotionInput::IsCalibrated(f32 sensitivity) const {      return real_error.Length() < sensitivity;  } -void MotionInput::UpdateRotation(const u64 elapsed_time) { +void MotionInput::UpdateRotation(u64 elapsed_time) {      const f32 sample_period = elapsed_time / 1000000.0f;      if (sample_period > 0.1f) {          return; @@ -65,7 +65,7 @@ void MotionInput::UpdateRotation(const u64 elapsed_time) {      rotations += gyro * sample_period;  } -void MotionInput::UpdateOrientation(const u64 elapsed_time) { +void MotionInput::UpdateOrientation(u64 elapsed_time) {      if (!IsCalibrated(0.1f)) {          ResetOrientation();      } @@ -174,6 +174,42 @@ std::array<Common::Vec3f, 3> MotionInput::GetOrientation() const {              Common::Vec3f(-matrix4x4[8], -matrix4x4[9], matrix4x4[10])};  } +Common::Vec3f MotionInput::GetAcceleration() const { +    return accel; +} + +Common::Vec3f MotionInput::GetGyroscope() const { +    return gyro; +} + +Common::Quaternion<f32> MotionInput::GetQuaternion() const { +    return quat; +} + +Common::Vec3f MotionInput::GetRotations() const { +    return rotations; +} + +void MotionInput::ResetOrientation() { +    if (!reset_enabled || only_accelerometer) { +        return; +    } +    if (!IsMoving(0.5f) && accel.z <= -0.9f) { +        ++reset_counter; +        if (reset_counter > 900) { +            quat.w = 0; +            quat.xyz[0] = 0; +            quat.xyz[1] = 0; +            quat.xyz[2] = -1; +            SetOrientationFromAccelerometer(); +            integral_error = {}; +            reset_counter = 0; +        } +    } else { +        reset_counter = 0; +    } +} +  void MotionInput::SetOrientationFromAccelerometer() {      int iterations = 0;      const f32 sample_period = 0.015f; @@ -234,40 +270,4 @@ void MotionInput::SetOrientationFromAccelerometer() {          quat = quat.Normalized();      }  } - -Common::Vec3f MotionInput::GetAcceleration() const { -    return accel; -} - -Common::Vec3f MotionInput::GetGyroscope() const { -    return gyro; -} - -Common::Quaternion<f32> MotionInput::GetQuaternion() const { -    return quat; -} - -Common::Vec3f MotionInput::GetRotations() const { -    return rotations; -} - -void MotionInput::ResetOrientation() { -    if (!reset_enabled || only_accelerometer) { -        return; -    } -    if (!IsMoving(0.5f) && accel.z <= -0.9f) { -        ++reset_counter; -        if (reset_counter > 900) { -            quat.w = 0; -            quat.xyz[0] = 0; -            quat.xyz[1] = 0; -            quat.xyz[2] = -1; -            SetOrientationFromAccelerometer(); -            integral_error = {}; -            reset_counter = 0; -        } -    } else { -        reset_counter = 0; -    } -}  } // namespace InputCommon diff --git a/src/input_common/motion_input.h b/src/input_common/motion_input.h index f6c1fece7..c90ee64e5 100644 --- a/src/input_common/motion_input.h +++ b/src/input_common/motion_input.h @@ -29,8 +29,8 @@ public:      void EnableReset(bool reset);      void ResetRotations(); -    void UpdateRotation(const u64 elapsed_time); -    void UpdateOrientation(const u64 elapsed_time); +    void UpdateRotation(u64 elapsed_time); +    void UpdateOrientation(u64 elapsed_time);      std::array<Common::Vec3f, 3> GetOrientation() const;      Common::Vec3f GetAcceleration() const; | 
