diff options
author | BastiaanOlij <mux213@gmail.com> | 2016-11-16 21:54:51 +1100 |
---|---|---|
committer | BastiaanOlij <mux213@gmail.com> | 2017-01-12 16:34:42 +1100 |
commit | ee98e06952555f140ffa9f3d18972760028cf87a (patch) | |
tree | d04a80fdb1f508a4fbb3a8446cd2d56ea2099dcb | |
parent | 51c60f7a49fad577f1c99ef0cf276933913a8b50 (diff) |
Added gravity vector back into the accelerometer data and flipped Z on the gyro
-rw-r--r-- | platform/iphone/app_delegate.mm | 5 | ||||
-rw-r--r-- | platform/iphone/os_iphone.cpp | 3 |
2 files changed, 5 insertions, 3 deletions
diff --git a/platform/iphone/app_delegate.mm b/platform/iphone/app_delegate.mm index 453ab85e3f..31e5e15e8d 100644 --- a/platform/iphone/app_delegate.mm +++ b/platform/iphone/app_delegate.mm @@ -203,8 +203,11 @@ static int frame_count = 0; // Just using polling approach for now, we can set this up so it sends data to us in intervals, might be better. // See Apple reference pages for more details: // https://developer.apple.com/reference/coremotion/cmmotionmanager?language=objc + + // Apple splits our accelerometer date into a gravity and user movement component. We add them back together + CMAcceleration gravity = motionManager.deviceMotion.gravity; CMAcceleration acceleration = motionManager.deviceMotion.userAcceleration; - OSIPhone::get_singleton()->update_accelerometer(acceleration.x, acceleration.y, acceleration.z); + OSIPhone::get_singleton()->update_accelerometer(acceleration.x + gravity.x, acceleration.y + gravity.y, acceleration.z + gravity.z); CMMagneticField magnetic = motionManager.deviceMotion.magneticField.field; OSIPhone::get_singleton()->update_magnetometer(magnetic.x, magnetic.y, magnetic.z); diff --git a/platform/iphone/os_iphone.cpp b/platform/iphone/os_iphone.cpp index cfd2a844c6..7e35bf787b 100644 --- a/platform/iphone/os_iphone.cpp +++ b/platform/iphone/os_iphone.cpp @@ -371,8 +371,7 @@ void OSIPhone::update_magnetometer(float p_x, float p_y, float p_z) { }; void OSIPhone::update_gyroscope(float p_x, float p_y, float p_z) { - ///@TODO I've made the Z negative like the original accelerometer code, this probably needs more work - input->set_gyroscope(Vector3(p_x, p_y, -p_z)); + input->set_gyroscope(Vector3(p_x, p_y, p_z)); }; void OSIPhone::delete_main_loop() { |