|
@@ -39,6 +39,7 @@
|
|
|
#import <CoreMotion/CoreMotion.h>
|
|
|
|
|
|
static const int max_touches = 8;
|
|
|
+static const float earth_gravity = 9.80665;
|
|
|
|
|
|
@interface GodotView () {
|
|
|
UITouch *godot_touches[max_touches];
|
|
@@ -402,10 +403,19 @@ static const int max_touches = 8;
|
|
|
// 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
|
|
|
+ // component. We add them back together.
|
|
|
CMAcceleration gravity = self.motionManager.deviceMotion.gravity;
|
|
|
CMAcceleration acceleration = self.motionManager.deviceMotion.userAcceleration;
|
|
|
|
|
|
+ // To be consistent with Android we convert the unit of measurement from g (Earth's gravity)
|
|
|
+ // to m/s^2.
|
|
|
+ gravity.x *= earth_gravity;
|
|
|
+ gravity.y *= earth_gravity;
|
|
|
+ gravity.z *= earth_gravity;
|
|
|
+ acceleration.x *= earth_gravity;
|
|
|
+ acceleration.y *= earth_gravity;
|
|
|
+ acceleration.z *= earth_gravity;
|
|
|
+
|
|
|
///@TODO We don't seem to be getting data here, is my device broken or
|
|
|
/// is this code incorrect?
|
|
|
CMMagneticField magnetic = self.motionManager.deviceMotion.magneticField.field;
|