reset controller gyro input when switched away

This commit is contained in:
TrueZhuanjia
2025-07-06 23:01:35 +08:00
parent 1d0743cda6
commit c42fe94b46
+12 -1
View File
@@ -1327,9 +1327,19 @@ static const double MOUSE_SPEED_DIVISOR = 1.25;
_gyroSensitivity = currentSettings.gyroSensitivity.floatValue;
}
- (void)resetGyroInputForController:(VoidController* )voidController{
if(voidController.hasAccelerometer) LiSendControllerMotionEvent((uint8_t)voidController.controllerNumber,LI_MOTION_TYPE_ACCEL,0,0,0);
if(voidController.hasGyroscope) LiSendControllerMotionEvent((uint8_t)voidController.controllerNumber,LI_MOTION_TYPE_GYRO,0,0,0);
if (@available(iOS 14.0, *)) {
voidController.gamepad.motion.sensorsActive = false;
}
}
- (void)stopTimerForAllControllers{
[self stopTimerForController:_oscController];
for(VoidController* controller in _voidControllers.allValues) [self stopTimerForController:controller];
for(VoidController* controller in _voidControllers.allValues){
[self stopTimerForController:controller];
}
}
- (void)updateControllerSupport:(StreamConfiguration*)streamConfig delegate:(id<ControllerSupportDelegate>)delegate {
@@ -1590,6 +1600,7 @@ static const double MOUSE_SPEED_DIVISOR = 1.25;
}
-(void)stopTimerForController:(VoidController* )voidController{
[self resetGyroInputForController:voidController];
if (@available(iOS 14.0, *)) {
//NSLog(@"stop controller obj: %@, hasAcc %d, hasGyro %d", voidController, voidController.hasAccelerometer, voidController.hasGyroscope);
if(voidController.hasAccelerometer){