diff --git a/DS4Windows/DS4Control/Mapping.cs b/DS4Windows/DS4Control/Mapping.cs index e5ff393..a1b1d7d 100644 --- a/DS4Windows/DS4Control/Mapping.cs +++ b/DS4Windows/DS4Control/Mapping.cs @@ -1512,45 +1512,50 @@ namespace DS4Windows if (controlType == DS4StateFieldMapping.ControlType.AxisDir) //if (dcs.control > DS4Controls.None && dcs.control < DS4Controls.L1) { + //int current = (int)dcs.control; + //outputfieldMapping.axisdirs[current] = fieldMapping.axisdirs[current]; customMapQueue[device].Enqueue(new ControlToXInput(dcs.control, dcs.control)); } } } Queue tempControl = customMapQueue[device]; - for (int i = 0, len = tempControl.Count; i < len; i++) - //while(tempControl.Any()) + unchecked { - ControlToXInput tempMap = tempControl.Dequeue(); - int controlNum = (int)tempMap.ds4input; - int tempOutControl = (int)tempMap.xoutput; - if (tempMap.xoutput >= DS4Controls.LXNeg && tempMap.xoutput <= DS4Controls.RYPos) + for (int i = 0, len = tempControl.Count; i < len; i++) + //while(tempControl.Any()) { - const byte axisDead = 128; - DS4StateFieldMapping.ControlType controlType = DS4StateFieldMapping.mappedType[tempOutControl]; - bool alt = controlType == DS4StateFieldMapping.ControlType.AxisDir && tempOutControl % 2 == 0 ? true : false; - byte axisMapping = getXYAxisMapping2(device, tempMap.ds4input, cState, eState, tp, fieldMapping, alt); - if (axisMapping != axisDead) + ControlToXInput tempMap = tempControl.Dequeue(); + int controlNum = (int)tempMap.ds4input; + int tempOutControl = (int)tempMap.xoutput; + if (tempMap.xoutput >= DS4Controls.LXNeg && tempMap.xoutput <= DS4Controls.RYPos) { - int controlRelation = tempOutControl % 2 == 0 ? tempOutControl - 1 : tempOutControl + 1; - outputfieldMapping.axisdirs[tempOutControl] = axisMapping; - outputfieldMapping.axisdirs[controlRelation] = axisMapping; - } - } - else - { - if (tempMap.xoutput == DS4Controls.L2 || tempMap.xoutput == DS4Controls.R2) - { - const byte axisZero = 0; - byte axisMapping = getByteMapping2(device, tempMap.ds4input, cState, eState, tp, fieldMapping); - if (axisMapping != axisZero) - outputfieldMapping.triggers[tempOutControl] = axisMapping; + const byte axisDead = 128; + DS4StateFieldMapping.ControlType controlType = DS4StateFieldMapping.mappedType[tempOutControl]; + bool alt = controlType == DS4StateFieldMapping.ControlType.AxisDir && tempOutControl % 2 == 0 ? true : false; + byte axisMapping = getXYAxisMapping2(device, tempMap.ds4input, cState, eState, tp, fieldMapping, alt); + if (axisMapping != axisDead) + { + int controlRelation = tempOutControl % 2 == 0 ? tempOutControl - 1 : tempOutControl + 1; + outputfieldMapping.axisdirs[tempOutControl] = axisMapping; + outputfieldMapping.axisdirs[controlRelation] = axisMapping; + } } else { - bool value = getBoolMapping2(device, tempMap.ds4input, cState, eState, tp, fieldMapping); - if (value) - outputfieldMapping.buttons[tempOutControl] = value; + if (tempMap.xoutput == DS4Controls.L2 || tempMap.xoutput == DS4Controls.R2) + { + const byte axisZero = 0; + byte axisMapping = getByteMapping2(device, tempMap.ds4input, cState, eState, tp, fieldMapping); + if (axisMapping != axisZero) + outputfieldMapping.triggers[tempOutControl] = axisMapping; + } + else + { + bool value = getBoolMapping2(device, tempMap.ds4input, cState, eState, tp, fieldMapping); + if (value) + outputfieldMapping.buttons[tempOutControl] = value; + } } } }