Skip to content

Commit 5594bca

Browse files
committed
Merge pull request #91050 from bruvzg/ios_sensor_fix
[iOS] Fix sensors orientation.
2 parents 5154044 + 7f52e5b commit 5594bca

File tree

3 files changed

+28
-34
lines changed

3 files changed

+28
-34
lines changed

platform/ios/display_server_ios.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,10 @@ class DisplayServerIOS : public DisplayServer {
129129

130130
// MARK: Motion
131131

132-
void update_gravity(float p_x, float p_y, float p_z);
133-
void update_accelerometer(float p_x, float p_y, float p_z);
134-
void update_magnetometer(float p_x, float p_y, float p_z);
135-
void update_gyroscope(float p_x, float p_y, float p_z);
132+
void update_gravity(const Vector3 &p_gravity);
133+
void update_accelerometer(const Vector3 &p_accelerometer);
134+
void update_magnetometer(const Vector3 &p_magnetometer);
135+
void update_gyroscope(const Vector3 &p_gyroscope);
136136

137137
// MARK: -
138138

platform/ios/display_server_ios.mm

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -289,26 +289,20 @@
289289

290290
// MARK: Motion
291291

292-
void DisplayServerIOS::update_gravity(float p_x, float p_y, float p_z) {
293-
Input::get_singleton()->set_gravity(Vector3(p_x, p_y, p_z));
292+
void DisplayServerIOS::update_gravity(const Vector3 &p_gravity) {
293+
Input::get_singleton()->set_gravity(p_gravity);
294294
}
295295

296-
void DisplayServerIOS::update_accelerometer(float p_x, float p_y, float p_z) {
297-
// Found out the Z should not be negated! Pass as is!
298-
Vector3 v_accelerometer = Vector3(
299-
p_x / kDisplayServerIOSAcceleration,
300-
p_y / kDisplayServerIOSAcceleration,
301-
p_z / kDisplayServerIOSAcceleration);
302-
303-
Input::get_singleton()->set_accelerometer(v_accelerometer);
296+
void DisplayServerIOS::update_accelerometer(const Vector3 &p_accelerometer) {
297+
Input::get_singleton()->set_accelerometer(p_accelerometer / kDisplayServerIOSAcceleration);
304298
}
305299

306-
void DisplayServerIOS::update_magnetometer(float p_x, float p_y, float p_z) {
307-
Input::get_singleton()->set_magnetometer(Vector3(p_x, p_y, p_z));
300+
void DisplayServerIOS::update_magnetometer(const Vector3 &p_magnetometer) {
301+
Input::get_singleton()->set_magnetometer(p_magnetometer);
308302
}
309303

310-
void DisplayServerIOS::update_gyroscope(float p_x, float p_y, float p_z) {
311-
Input::get_singleton()->set_gyroscope(Vector3(p_x, p_y, p_z));
304+
void DisplayServerIOS::update_gyroscope(const Vector3 &p_gyroscope) {
305+
Input::get_singleton()->set_gyroscope(p_gyroscope);
312306
}
313307

314308
// MARK: -

platform/ios/godot_view.mm

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -451,28 +451,28 @@ - (void)handleMotion {
451451

452452
switch (interfaceOrientation) {
453453
case UIInterfaceOrientationLandscapeLeft: {
454-
DisplayServerIOS::get_singleton()->update_gravity(-gravity.y, gravity.x, gravity.z);
455-
DisplayServerIOS::get_singleton()->update_accelerometer(-(acceleration.y + gravity.y), (acceleration.x + gravity.x), acceleration.z + gravity.z);
456-
DisplayServerIOS::get_singleton()->update_magnetometer(-magnetic.y, magnetic.x, magnetic.z);
457-
DisplayServerIOS::get_singleton()->update_gyroscope(-rotation.y, rotation.x, rotation.z);
454+
DisplayServerIOS::get_singleton()->update_gravity(Vector3(gravity.x, gravity.y, gravity.z).rotated(Vector3(0, 0, 1), -Math_PI * 0.5));
455+
DisplayServerIOS::get_singleton()->update_accelerometer(Vector3(acceleration.x + gravity.x, acceleration.y + gravity.y, acceleration.z + gravity.z).rotated(Vector3(0, 0, 1), -Math_PI * 0.5));
456+
DisplayServerIOS::get_singleton()->update_magnetometer(Vector3(magnetic.x, magnetic.y, magnetic.z).rotated(Vector3(0, 0, 1), -Math_PI * 0.5));
457+
DisplayServerIOS::get_singleton()->update_gyroscope(Vector3(rotation.x, rotation.y, rotation.z).rotated(Vector3(0, 0, 1), -Math_PI * 0.5));
458458
} break;
459459
case UIInterfaceOrientationLandscapeRight: {
460-
DisplayServerIOS::get_singleton()->update_gravity(gravity.y, -gravity.x, gravity.z);
461-
DisplayServerIOS::get_singleton()->update_accelerometer((acceleration.y + gravity.y), -(acceleration.x + gravity.x), acceleration.z + gravity.z);
462-
DisplayServerIOS::get_singleton()->update_magnetometer(magnetic.y, -magnetic.x, magnetic.z);
463-
DisplayServerIOS::get_singleton()->update_gyroscope(rotation.y, -rotation.x, rotation.z);
460+
DisplayServerIOS::get_singleton()->update_gravity(Vector3(gravity.x, gravity.y, gravity.z).rotated(Vector3(0, 0, 1), Math_PI * 0.5));
461+
DisplayServerIOS::get_singleton()->update_accelerometer(Vector3(acceleration.x + gravity.x, acceleration.y + gravity.y, acceleration.z + gravity.z).rotated(Vector3(0, 0, 1), Math_PI * 0.5));
462+
DisplayServerIOS::get_singleton()->update_magnetometer(Vector3(magnetic.x, magnetic.y, magnetic.z).rotated(Vector3(0, 0, 1), Math_PI * 0.5));
463+
DisplayServerIOS::get_singleton()->update_gyroscope(Vector3(rotation.x, rotation.y, rotation.z).rotated(Vector3(0, 0, 1), Math_PI * 0.5));
464464
} break;
465465
case UIInterfaceOrientationPortraitUpsideDown: {
466-
DisplayServerIOS::get_singleton()->update_gravity(-gravity.x, gravity.y, gravity.z);
467-
DisplayServerIOS::get_singleton()->update_accelerometer(-(acceleration.x + gravity.x), (acceleration.y + gravity.y), acceleration.z + gravity.z);
468-
DisplayServerIOS::get_singleton()->update_magnetometer(-magnetic.x, magnetic.y, magnetic.z);
469-
DisplayServerIOS::get_singleton()->update_gyroscope(-rotation.x, rotation.y, rotation.z);
466+
DisplayServerIOS::get_singleton()->update_gravity(Vector3(gravity.x, gravity.y, gravity.z).rotated(Vector3(0, 0, 1), Math_PI));
467+
DisplayServerIOS::get_singleton()->update_accelerometer(Vector3(acceleration.x + gravity.x, acceleration.y + gravity.y, acceleration.z + gravity.z).rotated(Vector3(0, 0, 1), Math_PI));
468+
DisplayServerIOS::get_singleton()->update_magnetometer(Vector3(magnetic.x, magnetic.y, magnetic.z).rotated(Vector3(0, 0, 1), Math_PI));
469+
DisplayServerIOS::get_singleton()->update_gyroscope(Vector3(rotation.x, rotation.y, rotation.z).rotated(Vector3(0, 0, 1), Math_PI));
470470
} break;
471471
default: { // assume portrait
472-
DisplayServerIOS::get_singleton()->update_gravity(gravity.x, gravity.y, gravity.z);
473-
DisplayServerIOS::get_singleton()->update_accelerometer(acceleration.x + gravity.x, acceleration.y + gravity.y, acceleration.z + gravity.z);
474-
DisplayServerIOS::get_singleton()->update_magnetometer(magnetic.x, magnetic.y, magnetic.z);
475-
DisplayServerIOS::get_singleton()->update_gyroscope(rotation.x, rotation.y, rotation.z);
472+
DisplayServerIOS::get_singleton()->update_gravity(Vector3(gravity.x, gravity.y, gravity.z));
473+
DisplayServerIOS::get_singleton()->update_accelerometer(Vector3(acceleration.x + gravity.x, acceleration.y + gravity.y, acceleration.z + gravity.z));
474+
DisplayServerIOS::get_singleton()->update_magnetometer(Vector3(magnetic.x, magnetic.y, magnetic.z));
475+
DisplayServerIOS::get_singleton()->update_gyroscope(Vector3(rotation.x, rotation.y, rotation.z));
476476
} break;
477477
}
478478
}

0 commit comments

Comments
 (0)