From 9e153fff9719458c14aa804874808caeccd03634 Mon Sep 17 00:00:00 2001 From: Travis Nickles Date: Fri, 28 Apr 2017 13:06:58 -0700 Subject: [PATCH] Fixed a couple of issue with gyro mappings --- DS4Windows/DS4Control/DS4StateFieldMapping.cs | 10 ++- DS4Windows/DS4Control/Mapping.cs | 78 ++++++++++--------- 2 files changed, 48 insertions(+), 40 deletions(-) diff --git a/DS4Windows/DS4Control/DS4StateFieldMapping.cs b/DS4Windows/DS4Control/DS4StateFieldMapping.cs index 5037cde..a56c32b 100644 --- a/DS4Windows/DS4Control/DS4StateFieldMapping.cs +++ b/DS4Windows/DS4Control/DS4StateFieldMapping.cs @@ -95,11 +95,13 @@ namespace DS4Windows buttons[(int)DS4Controls.TouchUpper] = tp != null ? tp.upperDown : false; buttons[(int)DS4Controls.TouchMulti] = tp != null ? tp.multiDown : false; - gryodirs[(int)DS4Controls.GyroXNeg] = exposeState.getGyroX(); - gryodirs[(int)DS4Controls.GyroXPos] = exposeState.getGyroX(); + int gyroX = exposeState.getGyroX(); + gryodirs[(int)DS4Controls.GyroXPos] = gyroX; + gryodirs[(int)DS4Controls.GyroXNeg] = gyroX; - gryodirs[(int)DS4Controls.GyroZPos] = exposeState.getGyroZ(); - gryodirs[(int)DS4Controls.GyroZPos] = exposeState.getGyroZ(); + int gyroZ = exposeState.getGyroZ(); + gryodirs[(int)DS4Controls.GyroZPos] = gyroZ; + gryodirs[(int)DS4Controls.GyroZNeg] = gyroZ; swipedirs[(int)DS4Controls.SwipeLeft] = tp != null ? tp.swipeLeftB : (byte)0; swipedirs[(int)DS4Controls.SwipeRight] = tp != null ? tp.swipeRightB : (byte)0; diff --git a/DS4Windows/DS4Control/Mapping.cs b/DS4Windows/DS4Control/Mapping.cs index 7cec265..d6f9665 100644 --- a/DS4Windows/DS4Control/Mapping.cs +++ b/DS4Windows/DS4Control/Mapping.cs @@ -2619,13 +2619,14 @@ namespace DS4Windows { bool sOff = isUsingSAforMouse(device); bool safeTest = false; - if (control == DS4Controls.GyroXNeg || control == DS4Controls.GyroZNeg) + + switch (control) { - safeTest = SXSens[device] * fieldMap.gryodirs[controlNum] > 67; - } - else - { - safeTest = SXSens[device] * fieldMap.gryodirs[controlNum] < -67; + case DS4Controls.GyroXPos: safeTest = SXSens[device] * fieldMap.gryodirs[controlNum] > 67; break; + case DS4Controls.GyroXNeg: safeTest = SXSens[device] * fieldMap.gryodirs[controlNum] < -67; break; + case DS4Controls.GyroZPos: safeTest = SZSens[device] * fieldMap.gryodirs[controlNum] > 67; break; + case DS4Controls.GyroZNeg: safeTest = SZSens[device] * fieldMap.gryodirs[controlNum] < -67; break; + default: break; } result = !sOff ? safeTest : false; @@ -2780,13 +2781,14 @@ namespace DS4Windows { bool sOff = isUsingSAforMouse(device); bool safeTest = false; - if (control == DS4Controls.GyroXNeg || control == DS4Controls.GyroZNeg) + + switch (control) { - safeTest = SXSens[device] * fieldMap.gryodirs[controlNum] > 67; - } - else - { - safeTest = SXSens[device] * fieldMap.gryodirs[controlNum] < -67; + case DS4Controls.GyroXPos: safeTest = SXSens[device] * fieldMap.gryodirs[controlNum] > 67; break; + case DS4Controls.GyroXNeg: safeTest = SXSens[device] * fieldMap.gryodirs[controlNum] < -67; break; + case DS4Controls.GyroZPos: safeTest = SZSens[device] * fieldMap.gryodirs[controlNum] > 67; break; + case DS4Controls.GyroZNeg: safeTest = SZSens[device] * fieldMap.gryodirs[controlNum] < -67; break; + default: break; } result = !sOff ? safeTest : false; @@ -3086,41 +3088,45 @@ namespace DS4Windows double SZD = getSZDeadzone(device); bool sOff = isUsingSAforMouse(device); - if (control == DS4Controls.GyroXNeg || control == DS4Controls.GyroZNeg) + switch (control) { - if (!sOff && fieldMap.gryodirs[controlNum] < -SXD * 10) + case DS4Controls.GyroXPos: { - if (alt) + if (!sOff && fieldMap.gryodirs[controlNum] > SXD * 10) { - result = (byte)Math.Min(255, 127 + SXSens[device] * -fieldMap.gryodirs[controlNum]); - } - else - { - result = (byte)Math.Max(0, 127 - SXSens[device] * -fieldMap.gryodirs[controlNum]); + if (alt) result = (byte)Math.Min(255, 127 + SXSens[device] * fieldMap.gryodirs[controlNum]); else result = (byte)Math.Max(0, 127 - SXSens[device] * fieldMap.gryodirs[controlNum]); } + else result = falseVal; + break; } - else + case DS4Controls.GyroXNeg: { - result = falseVal; - } - } - else - { - if (!sOff && fieldMap.gryodirs[controlNum] > SXD * 10) - { - if (alt) + if (!sOff && fieldMap.gryodirs[controlNum] < -SXD * 10) { - result = (byte)Math.Min(255, 127 + SXSens[device] * fieldMap.gryodirs[controlNum]); - } - else - { - result = (byte)Math.Max(0, 127 - SXSens[device] * fieldMap.gryodirs[controlNum]); + if (alt) result = (byte)Math.Min(255, 127 + SXSens[device] * -fieldMap.gryodirs[controlNum]); else result = (byte)Math.Max(0, 127 - SXSens[device] * -fieldMap.gryodirs[controlNum]); } + else result = falseVal; + break; } - else + case DS4Controls.GyroZPos: { - result = falseVal; + if (!sOff && fieldMap.gryodirs[controlNum] > SZD * 10) + { + if (alt) result = (byte)Math.Min(255, 127 + SZSens[device] * fieldMap.gryodirs[controlNum]); else result = (byte)Math.Max(0, 127 - SZSens[device] * fieldMap.gryodirs[controlNum]); + } + else return falseVal; + break; } + case DS4Controls.GyroZNeg: + { + if (!sOff && fieldMap.gryodirs[controlNum] < -SZD * 10) + { + if (alt) result = (byte)Math.Min(255, 127 + SZSens[device] * -fieldMap.gryodirs[controlNum]); else result = (byte)Math.Max(0, 127 - SZSens[device] * -fieldMap.gryodirs[controlNum]); + } + else result = falseVal; + break; + } + default: break; } }