mirror of
https://github.com/cemu-project/DS4Windows.git
synced 2024-12-24 23:51:49 +01:00
Some optimizations
This commit is contained in:
parent
a335decc90
commit
8eb9d6391f
@ -249,7 +249,7 @@ namespace DS4Windows
|
|||||||
DS4LightBar.updateLightBar(DS4Controllers[i], i, CurrentState[i],
|
DS4LightBar.updateLightBar(DS4Controllers[i], i, CurrentState[i],
|
||||||
ExposedState[i], touchPad[i]);
|
ExposedState[i], touchPad[i]);
|
||||||
tempDevice.IsRemoved = true;
|
tempDevice.IsRemoved = true;
|
||||||
System.Threading.Thread.Sleep(50);
|
Thread.Sleep(50);
|
||||||
}
|
}
|
||||||
|
|
||||||
CurrentState[i].Battery = PreviousState[i].Battery = 0; // Reset for the next connection's initial status change.
|
CurrentState[i].Battery = PreviousState[i].Battery = 0; // Reset for the next connection's initial status change.
|
||||||
@ -264,7 +264,7 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (anyUnplugged)
|
if (anyUnplugged)
|
||||||
System.Threading.Thread.Sleep(XINPUT_UNPLUG_SETTLE_TIME);
|
Thread.Sleep(XINPUT_UNPLUG_SETTLE_TIME);
|
||||||
|
|
||||||
x360Bus.UnplugAll();
|
x360Bus.UnplugAll();
|
||||||
x360Bus.Stop();
|
x360Bus.Stop();
|
||||||
@ -963,9 +963,11 @@ namespace DS4Windows
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool[] touchreleased = { true, true, true, true }, touchslid = { false, false, false, false };
|
public bool[] touchreleased = new bool[4] { true, true, true, true },
|
||||||
public byte[] oldtouchvalue = { 0, 0, 0, 0 };
|
touchslid = new bool[4] { false, false, false, false };
|
||||||
public int[] oldscrollvalue = { 0, 0, 0, 0 };
|
|
||||||
|
public byte[] oldtouchvalue = new byte[4] { 0, 0, 0, 0 };
|
||||||
|
public int[] oldscrollvalue = new int[4] { 0, 0, 0, 0 };
|
||||||
|
|
||||||
protected virtual void CheckForTouchToggle(int deviceID, DS4State cState, DS4State pState)
|
protected virtual void CheckForTouchToggle(int deviceID, DS4State cState, DS4State pState)
|
||||||
{
|
{
|
||||||
|
@ -18,13 +18,18 @@ namespace DS4Windows
|
|||||||
{ 140, 140 },
|
{ 140, 140 },
|
||||||
{ 168, 112 },
|
{ 168, 112 },
|
||||||
{ 196, 84 },
|
{ 196, 84 },
|
||||||
{ 224, 56}, // on 80% of the time at 80, etc.
|
{ 224, 56 }, // on 80% of the time at 80, etc.
|
||||||
{ 252, 28 } // on 90% of the time at 90
|
{ 252, 28 } // on 90% of the time at 90
|
||||||
};
|
};
|
||||||
|
|
||||||
static double[] counters = new double[4] { 0, 0, 0, 0 };
|
static double[] counters = new double[4] { 0, 0, 0, 0 };
|
||||||
public static Stopwatch[] fadewatches = { new Stopwatch(), new Stopwatch(), new Stopwatch(), new Stopwatch() };
|
public static Stopwatch[] fadewatches = new Stopwatch[4]
|
||||||
|
{ new Stopwatch(), new Stopwatch(), new Stopwatch(), new Stopwatch() };
|
||||||
|
|
||||||
static bool[] fadedirection = new bool[4] { false, false, false, false };
|
static bool[] fadedirection = new bool[4] { false, false, false, false };
|
||||||
static DateTime[] oldnow = { DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow };
|
static DateTime[] oldnow = new DateTime[4]
|
||||||
|
{ DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow };
|
||||||
|
|
||||||
public static bool[] forcelight = new bool[4] { false, false, false, false };
|
public static bool[] forcelight = new bool[4] { false, false, false, false };
|
||||||
public static DS4Color[] forcedColor = new DS4Color[4];
|
public static DS4Color[] forcedColor = new DS4Color[4];
|
||||||
public static byte[] forcedFlash = new byte[4];
|
public static byte[] forcedFlash = new byte[4];
|
||||||
@ -291,10 +296,6 @@ namespace DS4Windows
|
|||||||
if (tempLightBarOnDuration != haptics.LightBarFlashDurationOn && tempLightBarOnDuration != 1 && haptics.LightBarFlashDurationOn == 0)
|
if (tempLightBarOnDuration != haptics.LightBarFlashDurationOn && tempLightBarOnDuration != 1 && haptics.LightBarFlashDurationOn == 0)
|
||||||
haptics.LightBarFlashDurationOff = haptics.LightBarFlashDurationOn = 1;
|
haptics.LightBarFlashDurationOff = haptics.LightBarFlashDurationOn = 1;
|
||||||
|
|
||||||
// Comment out code for now. This condition gets hit too often and bogs down the GUI
|
|
||||||
//if (device.LightBarOnDuration == 1) //helps better reset the color
|
|
||||||
// System.Threading.Thread.Sleep(5);
|
|
||||||
|
|
||||||
device.pushHapticState(haptics);
|
device.pushHapticState(haptics);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,9 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static SyntheticState globalState = new SyntheticState();
|
public static SyntheticState globalState = new SyntheticState();
|
||||||
public static SyntheticState[] deviceState = { new SyntheticState(), new SyntheticState(), new SyntheticState(), new SyntheticState() };
|
public static SyntheticState[] deviceState = new SyntheticState[4]
|
||||||
|
{ new SyntheticState(), new SyntheticState(), new SyntheticState(),
|
||||||
|
new SyntheticState() };
|
||||||
|
|
||||||
// TODO When we disconnect, process a null/dead state to release any keys or buttons.
|
// TODO When we disconnect, process a null/dead state to release any keys or buttons.
|
||||||
public static DateTime oldnow = DateTime.UtcNow;
|
public static DateTime oldnow = DateTime.UtcNow;
|
||||||
@ -71,8 +73,8 @@ namespace DS4Windows
|
|||||||
static bool[] macroControl = new bool[25];
|
static bool[] macroControl = new bool[25];
|
||||||
|
|
||||||
//actions
|
//actions
|
||||||
public static int[] fadetimer = { 0, 0, 0, 0 };
|
public static int[] fadetimer = new int[4] { 0, 0, 0, 0 };
|
||||||
public static int[] prevFadetimer = { 0, 0, 0, 0 };
|
public static int[] prevFadetimer = new int[4] { 0, 0, 0, 0 };
|
||||||
public static DS4Color[] lastColor = new DS4Color[4];
|
public static DS4Color[] lastColor = new DS4Color[4];
|
||||||
public static List<ActionState> actionDone = new List<ActionState>();
|
public static List<ActionState> actionDone = new List<ActionState>();
|
||||||
//public static List<bool>[] actionDone = { new List<bool>(), new List<bool>(), new List<bool>(), new List<bool>() };
|
//public static List<bool>[] actionDone = { new List<bool>(), new List<bool>(), new List<bool>(), new List<bool>() };
|
||||||
@ -80,16 +82,17 @@ namespace DS4Windows
|
|||||||
public static SpecialAction[] untriggeraction = new SpecialAction[4];
|
public static SpecialAction[] untriggeraction = new SpecialAction[4];
|
||||||
public static DateTime[] nowAction = { DateTime.MinValue, DateTime.MinValue, DateTime.MinValue, DateTime.MinValue };
|
public static DateTime[] nowAction = { DateTime.MinValue, DateTime.MinValue, DateTime.MinValue, DateTime.MinValue };
|
||||||
public static DateTime[] oldnowAction = { DateTime.MinValue, DateTime.MinValue, DateTime.MinValue, DateTime.MinValue };
|
public static DateTime[] oldnowAction = { DateTime.MinValue, DateTime.MinValue, DateTime.MinValue, DateTime.MinValue };
|
||||||
public static int[] untriggerindex = { -1, -1, -1, -1 };
|
public static int[] untriggerindex = new int[4] { -1, -1, -1, -1 };
|
||||||
public static DateTime[] oldnowKeyAct = { DateTime.MinValue, DateTime.MinValue, DateTime.MinValue, DateTime.MinValue };
|
public static DateTime[] oldnowKeyAct = new DateTime[4] { DateTime.MinValue,
|
||||||
//private static bool tappedOnce = false, firstTouch = false, secondtouchbegin = false;
|
DateTime.MinValue, DateTime.MinValue, DateTime.MinValue };
|
||||||
//private static DateTime pastTime, firstTap, TimeofEnd;
|
|
||||||
private static DS4Controls[] shiftTriggerMapping = { DS4Controls.None, DS4Controls.Cross, DS4Controls.Circle, DS4Controls.Square,
|
private static DS4Controls[] shiftTriggerMapping = { DS4Controls.None, DS4Controls.Cross, DS4Controls.Circle, DS4Controls.Square,
|
||||||
DS4Controls.Triangle, DS4Controls.Options, DS4Controls.Share, DS4Controls.DpadUp, DS4Controls.DpadDown,
|
DS4Controls.Triangle, DS4Controls.Options, DS4Controls.Share, DS4Controls.DpadUp, DS4Controls.DpadDown,
|
||||||
DS4Controls.DpadLeft, DS4Controls.DpadRight, DS4Controls.PS, DS4Controls.L1, DS4Controls.R1, DS4Controls.L2,
|
DS4Controls.DpadLeft, DS4Controls.DpadRight, DS4Controls.PS, DS4Controls.L1, DS4Controls.R1, DS4Controls.L2,
|
||||||
DS4Controls.R2, DS4Controls.L3, DS4Controls.R3, DS4Controls.TouchLeft, DS4Controls.TouchUpper, DS4Controls.TouchMulti,
|
DS4Controls.R2, DS4Controls.L3, DS4Controls.R3, DS4Controls.TouchLeft, DS4Controls.TouchUpper, DS4Controls.TouchMulti,
|
||||||
DS4Controls.TouchRight, DS4Controls.GyroZNeg, DS4Controls.GyroZPos, DS4Controls.GyroXPos, DS4Controls.GyroXNeg
|
DS4Controls.TouchRight, DS4Controls.GyroZNeg, DS4Controls.GyroZPos, DS4Controls.GyroXPos, DS4Controls.GyroXNeg
|
||||||
};
|
};
|
||||||
|
|
||||||
private static int[] ds4ControlMapping = { 0, // DS4Control.None
|
private static int[] ds4ControlMapping = { 0, // DS4Control.None
|
||||||
16, // DS4Controls.LXNeg
|
16, // DS4Controls.LXNeg
|
||||||
20, // DS4Controls.LXPos
|
20, // DS4Controls.LXPos
|
||||||
@ -128,13 +131,14 @@ namespace DS4Windows
|
|||||||
|
|
||||||
// Define here to save some time processing.
|
// Define here to save some time processing.
|
||||||
// It is enough to feel a difference during gameplay.
|
// It is enough to feel a difference during gameplay.
|
||||||
private static int[] rsOutCurveModeArray = { 0, 0, 0, 0 };
|
private static int[] rsOutCurveModeArray = new int[4] { 0, 0, 0, 0 };
|
||||||
private static int[] lsOutCurveModeArray = { 0, 0, 0, 0 };
|
private static int[] lsOutCurveModeArray = new int[4] { 0, 0, 0, 0 };
|
||||||
static bool tempBool = false;
|
static bool tempBool = false;
|
||||||
|
|
||||||
// Special macros
|
// Special macros
|
||||||
static bool altTabDone = true;
|
static bool altTabDone = true;
|
||||||
static DateTime altTabNow = DateTime.UtcNow, oldAltTabNow = DateTime.UtcNow - TimeSpan.FromSeconds(1);
|
static DateTime altTabNow = DateTime.UtcNow,
|
||||||
|
oldAltTabNow = DateTime.UtcNow - TimeSpan.FromSeconds(1);
|
||||||
|
|
||||||
// Mouse
|
// Mouse
|
||||||
public static int mcounter = 34;
|
public static int mcounter = 34;
|
||||||
@ -347,6 +351,7 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
state.SavePrevious(true);
|
state.SavePrevious(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum Click { None, Left, Middle, Right, Fourth, Fifth, WUP, WDOWN };
|
public enum Click { None, Left, Middle, Right, Fourth, Fifth, WUP, WDOWN };
|
||||||
public static void MapClick(int device, Click mouseClick)
|
public static void MapClick(int device, Click mouseClick)
|
||||||
{
|
{
|
||||||
@ -394,17 +399,6 @@ namespace DS4Windows
|
|||||||
return value1 * percent + value2 * (1 - percent);
|
return value1 * percent + value2 * (1 - percent);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*static double Clamp(double min, double value, double max)
|
|
||||||
{
|
|
||||||
if (value > max)
|
|
||||||
return max;
|
|
||||||
else if (value < min)
|
|
||||||
return min;
|
|
||||||
else
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
private static int ClampInt(int min, int value, int max)
|
private static int ClampInt(int min, int value, int max)
|
||||||
{
|
{
|
||||||
return (value < min) ? min : (value > max) ? max : value;
|
return (value < min) ? min : (value > max) ? max : value;
|
||||||
@ -536,16 +530,16 @@ namespace DS4Windows
|
|||||||
double currentY = Global.Clamp(maxZoneYNegValue, dState.LY, maxZoneYPosValue);
|
double currentY = Global.Clamp(maxZoneYNegValue, dState.LY, maxZoneYPosValue);
|
||||||
//currentX = (byte)((dState.LX >= 127.5f) ? Math.Min(dState.LX, maxZoneX) : Math.Max(dState.LX, maxZoneX));
|
//currentX = (byte)((dState.LX >= 127.5f) ? Math.Min(dState.LX, maxZoneX) : Math.Max(dState.LX, maxZoneX));
|
||||||
//currentY = (byte)((dState.LY >= 127.5f) ? Math.Min(dState.LY, maxZoneY) : Math.Max(dState.LY, maxZoneY));
|
//currentY = (byte)((dState.LY >= 127.5f) ? Math.Min(dState.LY, maxZoneY) : Math.Max(dState.LY, maxZoneY));
|
||||||
tempOutputX = ((currentX - 127.5f - tempLsXDead) / (double)(maxZoneX - tempLsXDead));
|
tempOutputX = ((currentX - 127.5f - tempLsXDead) / (maxZoneX - tempLsXDead));
|
||||||
tempOutputY = ((currentY - 127.5f - tempLsYDead) / (double)(maxZoneY - tempLsYDead));
|
tempOutputY = ((currentY - 127.5f - tempLsYDead) / (maxZoneY - tempLsYDead));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
double currentX = Global.Clamp(maxZoneXNegValue, dState.LX, maxZoneXPosValue);
|
double currentX = Global.Clamp(maxZoneXNegValue, dState.LX, maxZoneXPosValue);
|
||||||
double currentY = Global.Clamp(maxZoneYNegValue, dState.LY, maxZoneYPosValue);
|
double currentY = Global.Clamp(maxZoneYNegValue, dState.LY, maxZoneYPosValue);
|
||||||
tempOutputX = (currentX - 127.5f) / (double)(maxZoneX);
|
tempOutputX = (currentX - 127.5f) / maxZoneX;
|
||||||
tempOutputY = (currentY - 127.5f) / (double)(maxZoneY);
|
tempOutputY = (currentY - 127.5f) / maxZoneY;
|
||||||
}
|
}
|
||||||
|
|
||||||
double tempLsXAntiDeadPercent = 0.0, tempLsYAntiDeadPercent = 0.0;
|
double tempLsXAntiDeadPercent = 0.0, tempLsYAntiDeadPercent = 0.0;
|
||||||
@ -613,8 +607,8 @@ namespace DS4Windows
|
|||||||
double currentX = Global.Clamp(maxZoneXNegValue, dState.RX, maxZoneXPosValue);
|
double currentX = Global.Clamp(maxZoneXNegValue, dState.RX, maxZoneXPosValue);
|
||||||
double currentY = Global.Clamp(maxZoneYNegValue, dState.RY, maxZoneYPosValue);
|
double currentY = Global.Clamp(maxZoneYNegValue, dState.RY, maxZoneYPosValue);
|
||||||
|
|
||||||
tempOutputX = ((currentX - 127.5f - tempRsXDead) / (double)(maxZoneX - tempRsXDead));
|
tempOutputX = ((currentX - 127.5f - tempRsXDead) / (maxZoneX - tempRsXDead));
|
||||||
tempOutputY = ((currentY - 127.5f - tempRsYDead) / (double)(maxZoneY - tempRsYDead));
|
tempOutputY = ((currentY - 127.5f - tempRsYDead) / (maxZoneY - tempRsYDead));
|
||||||
//tempOutputX = ((dState.RX - 127.5f - tempRsXDead) / (double)(maxXValue - tempRsXDead));
|
//tempOutputX = ((dState.RX - 127.5f - tempRsXDead) / (double)(maxXValue - tempRsXDead));
|
||||||
//tempOutputY = ((dState.RY - 127.5f - tempRsYDead) / (double)(maxYValue - tempRsYDead));
|
//tempOutputY = ((dState.RY - 127.5f - tempRsYDead) / (double)(maxYValue - tempRsYDead));
|
||||||
}
|
}
|
||||||
@ -624,8 +618,8 @@ namespace DS4Windows
|
|||||||
double currentX = Global.Clamp(maxZoneXNegValue, dState.RX, maxZoneXPosValue);
|
double currentX = Global.Clamp(maxZoneXNegValue, dState.RX, maxZoneXPosValue);
|
||||||
double currentY = Global.Clamp(maxZoneYNegValue, dState.RY, maxZoneYPosValue);
|
double currentY = Global.Clamp(maxZoneYNegValue, dState.RY, maxZoneYPosValue);
|
||||||
|
|
||||||
tempOutputX = (currentX - 127.5f) / (double)(maxZoneX);
|
tempOutputX = (currentX - 127.5f) / maxZoneX;
|
||||||
tempOutputY = (currentY - 127.5f) / (double)(maxZoneY);
|
tempOutputY = (currentY - 127.5f) / maxZoneY;
|
||||||
//tempOutputX = ((dState.RX - 127.5f) / (double)(maxXValue));
|
//tempOutputX = ((dState.RX - 127.5f) / (double)(maxXValue));
|
||||||
//tempOutputY = ((dState.RY - 127.5f) / (double)(maxYValue));
|
//tempOutputY = ((dState.RY - 127.5f) / (double)(maxYValue));
|
||||||
}
|
}
|
||||||
@ -672,7 +666,7 @@ namespace DS4Windows
|
|||||||
if (cState.L2 > l2Deadzone)
|
if (cState.L2 > l2Deadzone)
|
||||||
{
|
{
|
||||||
double current = Global.Clamp(0, dState.L2, maxValue);
|
double current = Global.Clamp(0, dState.L2, maxValue);
|
||||||
tempL2Output = ((current - l2Deadzone) / (double)(maxValue - l2Deadzone));
|
tempL2Output = ((current - l2Deadzone) / (maxValue - l2Deadzone));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -710,7 +704,7 @@ namespace DS4Windows
|
|||||||
if (cState.R2 > r2Deadzone)
|
if (cState.R2 > r2Deadzone)
|
||||||
{
|
{
|
||||||
double current = Global.Clamp(0, dState.R2, maxValue);
|
double current = Global.Clamp(0, dState.R2, maxValue);
|
||||||
tempR2Output = ((current - r2Deadzone) / (double)(maxValue - r2Deadzone));
|
tempR2Output = ((current - r2Deadzone) / (maxValue - r2Deadzone));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -875,8 +869,8 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool sOff = isUsingSAforMouse(device);
|
bool sOff = tempBool = isUsingSAforMouse(device);
|
||||||
if (!sOff)
|
if (sOff == false)
|
||||||
{
|
{
|
||||||
double SXD = 10 * getSXDeadzone(device);
|
double SXD = 10 * getSXDeadzone(device);
|
||||||
double SZD = 10 * getSZDeadzone(device);
|
double SZD = 10 * getSZDeadzone(device);
|
||||||
@ -968,6 +962,7 @@ namespace DS4Windows
|
|||||||
X360Controls x3c;
|
X360Controls x3c;
|
||||||
if (Enum.TryParse(key, true, out x3c))
|
if (Enum.TryParse(key, true, out x3c))
|
||||||
return x3c;
|
return x3c;
|
||||||
|
|
||||||
switch (key)
|
switch (key)
|
||||||
{
|
{
|
||||||
case "Back": return X360Controls.Back;
|
case "Back": return X360Controls.Back;
|
||||||
@ -1011,8 +1006,9 @@ namespace DS4Windows
|
|||||||
case "Mouse Left": return X360Controls.MouseLeft;
|
case "Mouse Left": return X360Controls.MouseLeft;
|
||||||
case "Mouse Right": return X360Controls.MouseRight;
|
case "Mouse Right": return X360Controls.MouseRight;
|
||||||
case "Unbound": return X360Controls.Unbound;
|
case "Unbound": return X360Controls.Unbound;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return X360Controls.Unbound;
|
return X360Controls.Unbound;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1088,7 +1084,6 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
else if (actionType == DS4ControlSettings.ActionType.Key)
|
else if (actionType == DS4ControlSettings.ActionType.Key)
|
||||||
{
|
{
|
||||||
//ushort value = ushort.Parse(action.ToString());
|
|
||||||
ushort value = Convert.ToUInt16(action);
|
ushort value = Convert.ToUInt16(action);
|
||||||
if (getBoolActionMapping2(device, dcs.control, cState, eState, tp, fieldMapping))
|
if (getBoolActionMapping2(device, dcs.control, cState, eState, tp, fieldMapping))
|
||||||
{
|
{
|
||||||
@ -2587,7 +2582,7 @@ namespace DS4Windows
|
|||||||
mcounter = 34;
|
mcounter = 34;
|
||||||
}
|
}
|
||||||
|
|
||||||
value *= 1 + (double)Math.Min(20000, (mouseaccel)) / 10000d;
|
value *= 1 + Math.Min(20000, (mouseaccel)) / 10000d;
|
||||||
prevmouseaccel = mouseaccel;
|
prevmouseaccel = mouseaccel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2685,40 +2680,32 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
else if (controlType == DS4StateFieldMapping.ControlType.GyroDir)
|
else if (controlType == DS4StateFieldMapping.ControlType.GyroDir)
|
||||||
{
|
{
|
||||||
//double SXD = getSXDeadzone(device);
|
|
||||||
//double SZD = getSZDeadzone(device);
|
|
||||||
bool sOff = isUsingSAforMouse(device);
|
bool sOff = isUsingSAforMouse(device);
|
||||||
//double sxsens = getSXSens(device);
|
|
||||||
//double szsens = getSZSens(device);
|
|
||||||
|
|
||||||
switch (control)
|
switch (control)
|
||||||
{
|
{
|
||||||
case DS4Controls.GyroXPos:
|
case DS4Controls.GyroXPos:
|
||||||
{
|
{
|
||||||
int gyroX = fieldMap.gryodirs[controlNum];
|
int gyroX = fieldMap.gryodirs[controlNum];
|
||||||
//result = (byte)(!sOff && sxsens * gyroX > SXD * 10 ? Math.Min(255, sxsens * gyroX * 2) : 0);
|
result = (byte)(sOff == false ? Math.Min(255, gyroX * 2) : 0);
|
||||||
result = (byte)(!sOff ? Math.Min(255, gyroX * 2) : 0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DS4Controls.GyroXNeg:
|
case DS4Controls.GyroXNeg:
|
||||||
{
|
{
|
||||||
int gyroX = fieldMap.gryodirs[controlNum];
|
int gyroX = fieldMap.gryodirs[controlNum];
|
||||||
//result = (byte)(!sOff && sxsens * gyroX < -SXD * 10 ? Math.Min(255, sxsens * -gyroX * 2) : 0);
|
result = (byte)(sOff == false ? Math.Min(255, -gyroX * 2) : 0);
|
||||||
result = (byte)(!sOff ? Math.Min(255, -gyroX * 2) : 0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DS4Controls.GyroZPos:
|
case DS4Controls.GyroZPos:
|
||||||
{
|
{
|
||||||
int gyroZ = fieldMap.gryodirs[controlNum];
|
int gyroZ = fieldMap.gryodirs[controlNum];
|
||||||
//result = (byte)(!sOff && szsens * gyroZ > SZD * 10 ? Math.Min(255, szsens * gyroZ * 2) : 0);
|
result = (byte)(sOff == false ? Math.Min(255, gyroZ * 2) : 0);
|
||||||
result = (byte)(!sOff ? Math.Min(255, gyroZ * 2) : 0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DS4Controls.GyroZNeg:
|
case DS4Controls.GyroZNeg:
|
||||||
{
|
{
|
||||||
int gyroZ = fieldMap.gryodirs[controlNum];
|
int gyroZ = fieldMap.gryodirs[controlNum];
|
||||||
//result = (byte)(!sOff && szsens * gyroZ < -SZD * 10 ? Math.Min(255, szsens * -gyroZ * 2) : 0);
|
result = (byte)(sOff == false ? Math.Min(255, -gyroZ * 2) : 0);
|
||||||
result = (byte)(!sOff ? Math.Min(255, -gyroZ * 2) : 0);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: break;
|
default: break;
|
||||||
@ -3002,14 +2989,14 @@ namespace DS4Windows
|
|||||||
|
|
||||||
switch (control)
|
switch (control)
|
||||||
{
|
{
|
||||||
case DS4Controls.GyroXPos: safeTest = SXSens[device] * fieldMap.gryodirs[controlNum] > 67; break;
|
case DS4Controls.GyroXPos: safeTest = fieldMap.gryodirs[controlNum] > 67; break;
|
||||||
case DS4Controls.GyroXNeg: safeTest = SXSens[device] * fieldMap.gryodirs[controlNum] < -67; break;
|
case DS4Controls.GyroXNeg: safeTest = fieldMap.gryodirs[controlNum] < -67; break;
|
||||||
case DS4Controls.GyroZPos: safeTest = SZSens[device] * fieldMap.gryodirs[controlNum] > 67; break;
|
case DS4Controls.GyroZPos: safeTest = fieldMap.gryodirs[controlNum] > 67; break;
|
||||||
case DS4Controls.GyroZNeg: safeTest = SZSens[device] * fieldMap.gryodirs[controlNum] < -67; break;
|
case DS4Controls.GyroZNeg: safeTest = fieldMap.gryodirs[controlNum] < -67; break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = !sOff ? safeTest : false;
|
result = sOff == false ? safeTest : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -3171,7 +3158,7 @@ namespace DS4Windows
|
|||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = !sOff ? safeTest : false;
|
result = sOff == false ? safeTest : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -3421,7 +3408,7 @@ namespace DS4Windows
|
|||||||
|
|
||||||
if (controlType == DS4StateFieldMapping.ControlType.Button)
|
if (controlType == DS4StateFieldMapping.ControlType.Button)
|
||||||
{
|
{
|
||||||
result = (byte)(fieldMap.buttons[controlNum] ? trueVal : falseVal);
|
result = fieldMap.buttons[controlNum] ? trueVal : falseVal;
|
||||||
}
|
}
|
||||||
else if (controlType == DS4StateFieldMapping.ControlType.AxisDir)
|
else if (controlType == DS4StateFieldMapping.ControlType.AxisDir)
|
||||||
{
|
{
|
||||||
@ -3449,7 +3436,7 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
else if (controlType == DS4StateFieldMapping.ControlType.Touch)
|
else if (controlType == DS4StateFieldMapping.ControlType.Touch)
|
||||||
{
|
{
|
||||||
result = (byte)(fieldMap.buttons[controlNum] ? trueVal : falseVal);
|
result = fieldMap.buttons[controlNum] ? trueVal : falseVal;
|
||||||
}
|
}
|
||||||
else if (controlType == DS4StateFieldMapping.ControlType.SwipeDir)
|
else if (controlType == DS4StateFieldMapping.ControlType.SwipeDir)
|
||||||
{
|
{
|
||||||
@ -3464,15 +3451,13 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
else if (controlType == DS4StateFieldMapping.ControlType.GyroDir)
|
else if (controlType == DS4StateFieldMapping.ControlType.GyroDir)
|
||||||
{
|
{
|
||||||
//double SXD = getSXDeadzone(device);
|
|
||||||
//double SZD = getSZDeadzone(device);
|
|
||||||
bool sOff = isUsingSAforMouse(device);
|
bool sOff = isUsingSAforMouse(device);
|
||||||
|
|
||||||
switch (control)
|
switch (control)
|
||||||
{
|
{
|
||||||
case DS4Controls.GyroXPos:
|
case DS4Controls.GyroXPos:
|
||||||
{
|
{
|
||||||
if (!sOff && fieldMap.gryodirs[controlNum] > 0)
|
if (sOff == false && fieldMap.gryodirs[controlNum] > 0)
|
||||||
{
|
{
|
||||||
if (alt) result = (byte)Math.Min(255, 127 + fieldMap.gryodirs[controlNum]); else result = (byte)Math.Max(0, 127 - fieldMap.gryodirs[controlNum]);
|
if (alt) result = (byte)Math.Min(255, 127 + fieldMap.gryodirs[controlNum]); else result = (byte)Math.Max(0, 127 - fieldMap.gryodirs[controlNum]);
|
||||||
}
|
}
|
||||||
@ -3481,7 +3466,7 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
case DS4Controls.GyroXNeg:
|
case DS4Controls.GyroXNeg:
|
||||||
{
|
{
|
||||||
if (!sOff && fieldMap.gryodirs[controlNum] < 0)
|
if (sOff == false && fieldMap.gryodirs[controlNum] < 0)
|
||||||
{
|
{
|
||||||
if (alt) result = (byte)Math.Min(255, 127 + -fieldMap.gryodirs[controlNum]); else result = (byte)Math.Max(0, 127 - -fieldMap.gryodirs[controlNum]);
|
if (alt) result = (byte)Math.Min(255, 127 + -fieldMap.gryodirs[controlNum]); else result = (byte)Math.Max(0, 127 - -fieldMap.gryodirs[controlNum]);
|
||||||
}
|
}
|
||||||
@ -3490,7 +3475,7 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
case DS4Controls.GyroZPos:
|
case DS4Controls.GyroZPos:
|
||||||
{
|
{
|
||||||
if (!sOff && fieldMap.gryodirs[controlNum] > 0)
|
if (sOff == false && fieldMap.gryodirs[controlNum] > 0)
|
||||||
{
|
{
|
||||||
if (alt) result = (byte)Math.Min(255, 127 + fieldMap.gryodirs[controlNum]); else result = (byte)Math.Max(0, 127 - fieldMap.gryodirs[controlNum]);
|
if (alt) result = (byte)Math.Min(255, 127 + fieldMap.gryodirs[controlNum]); else result = (byte)Math.Max(0, 127 - fieldMap.gryodirs[controlNum]);
|
||||||
}
|
}
|
||||||
@ -3499,7 +3484,7 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
case DS4Controls.GyroZNeg:
|
case DS4Controls.GyroZNeg:
|
||||||
{
|
{
|
||||||
if (!sOff && fieldMap.gryodirs[controlNum] < 0)
|
if (sOff == false && fieldMap.gryodirs[controlNum] < 0)
|
||||||
{
|
{
|
||||||
if (alt) result = (byte)Math.Min(255, 127 + -fieldMap.gryodirs[controlNum]); else result = (byte)Math.Max(0, 127 - -fieldMap.gryodirs[controlNum]);
|
if (alt) result = (byte)Math.Min(255, 127 + -fieldMap.gryodirs[controlNum]); else result = (byte)Math.Max(0, 127 - -fieldMap.gryodirs[controlNum]);
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,8 @@ namespace DS4Windows
|
|||||||
/** Indicate x/y direction for doing jitter compensation, etc. */
|
/** Indicate x/y direction for doing jitter compensation, etc. */
|
||||||
public enum Direction { Negative, Neutral, Positive }
|
public enum Direction { Negative, Neutral, Positive }
|
||||||
// Track direction vector separately and very trivially for now.
|
// Track direction vector separately and very trivially for now.
|
||||||
private Direction horizontalDirection = Direction.Neutral, verticalDirection = Direction.Neutral;
|
private Direction horizontalDirection = Direction.Neutral,
|
||||||
|
verticalDirection = Direction.Neutral;
|
||||||
private Direction hDirection = Direction.Neutral, vDirection = Direction.Neutral;
|
private Direction hDirection = Direction.Neutral, vDirection = Direction.Neutral;
|
||||||
|
|
||||||
private double GYRO_MOUSE_COEFFICIENT = 0.0095;
|
private double GYRO_MOUSE_COEFFICIENT = 0.0095;
|
||||||
|
@ -802,12 +802,12 @@ namespace DS4Windows
|
|||||||
DS4StateExposed exposeState = Program.rootHub.ExposedState[tempDeviceNum];
|
DS4StateExposed exposeState = Program.rootHub.ExposedState[tempDeviceNum];
|
||||||
DS4State baseState = Program.rootHub.getDS4State(tempDeviceNum);
|
DS4State baseState = Program.rootHub.getDS4State(tempDeviceNum);
|
||||||
|
|
||||||
SetDynamicTrackBarValue(tBsixaxisGyroX, (exposeState.GyroYaw + tBsixaxisGyroX.Value * 2) / 3);
|
SetDynamicTrackBarValue(tBsixaxisGyroX, (exposeState.getGyroYaw() + tBsixaxisGyroX.Value * 2) / 3);
|
||||||
SetDynamicTrackBarValue(tBsixaxisGyroY, (exposeState.GyroPitch + tBsixaxisGyroY.Value * 2) / 3);
|
SetDynamicTrackBarValue(tBsixaxisGyroY, (exposeState.getGyroPitch() + tBsixaxisGyroY.Value * 2) / 3);
|
||||||
SetDynamicTrackBarValue(tBsixaxisGyroZ, (exposeState.GyroRoll + tBsixaxisGyroZ.Value * 2) / 3);
|
SetDynamicTrackBarValue(tBsixaxisGyroZ, (exposeState.getGyroRoll() + tBsixaxisGyroZ.Value * 2) / 3);
|
||||||
SetDynamicTrackBarValue(tBsixaxisAccelX, (exposeState.AccelX + tBsixaxisAccelX.Value * 2) / 3);
|
SetDynamicTrackBarValue(tBsixaxisAccelX, (exposeState.getAccelX() + tBsixaxisAccelX.Value * 2) / 3);
|
||||||
SetDynamicTrackBarValue(tBsixaxisAccelY, (exposeState.AccelY + tBsixaxisAccelY.Value * 2) / 3);
|
SetDynamicTrackBarValue(tBsixaxisAccelY, (exposeState.getAccelY() + tBsixaxisAccelY.Value * 2) / 3);
|
||||||
SetDynamicTrackBarValue(tBsixaxisAccelZ, (exposeState.AccelZ + tBsixaxisAccelZ.Value * 2) / 3);
|
SetDynamicTrackBarValue(tBsixaxisAccelZ, (exposeState.getAccelZ() + tBsixaxisAccelZ.Value * 2) / 3);
|
||||||
|
|
||||||
int x = baseState.LX;
|
int x = baseState.LX;
|
||||||
int y = baseState.LY;
|
int y = baseState.LY;
|
||||||
@ -899,8 +899,8 @@ namespace DS4Windows
|
|||||||
(int)(tempRSS * (btnRSTrack.Location.Y - pnlRSTrack.Size.Height / 2f) + pnlRSTrack.Size.Height / 2f));
|
(int)(tempRSS * (btnRSTrack.Location.Y - pnlRSTrack.Size.Height / 2f) + pnlRSTrack.Size.Height / 2f));
|
||||||
}
|
}
|
||||||
|
|
||||||
x = exposeState.AccelX + 127;
|
x = exposeState.getAccelX() + 127;
|
||||||
y = exposeState.AccelZ + 127;
|
y = exposeState.getAccelZ() + 127;
|
||||||
btnSATrack.Location = new Point((int)(dpix * Global.Clamp(0, x / 2.09, pnlSATrack.Size.Width)), (int)(dpiy * Global.Clamp(0, y / 2.09, pnlSATrack.Size.Height)));
|
btnSATrack.Location = new Point((int)(dpix * Global.Clamp(0, x / 2.09, pnlSATrack.Size.Width)), (int)(dpiy * Global.Clamp(0, y / 2.09, pnlSATrack.Size.Height)));
|
||||||
|
|
||||||
double tempSXS = (double)nUDSXS.Value;
|
double tempSXS = (double)nUDSXS.Value;
|
||||||
|
@ -53,20 +53,19 @@ namespace DS4Windows
|
|||||||
|
|
||||||
public class DS4SixAxis
|
public class DS4SixAxis
|
||||||
{
|
{
|
||||||
// no status change for the touchpad itself... but other sensors may have changed, or you may just want to do some processing
|
|
||||||
public event EventHandler<SixAxisEventArgs> SixAccelMoved = null;
|
public event EventHandler<SixAxisEventArgs> SixAccelMoved = null;
|
||||||
|
|
||||||
internal int lastGyroYaw, lastGyroPitch, lastGyroRoll,
|
internal int lastGyroYaw, lastGyroPitch, lastGyroRoll,
|
||||||
lastAX, lastAY, lastAZ; // tracks 0, 1 or 2 touches; we maintain touch 1 and 2 separately
|
lastAX, lastAY, lastAZ;
|
||||||
|
|
||||||
internal double lastMilliseconds;
|
internal double lastMilliseconds;
|
||||||
internal byte[] previousPacket = new byte[8];
|
internal byte[] previousPacket = new byte[8];
|
||||||
|
|
||||||
public void handleSixaxis(byte[] gyro, byte[] accel, DS4State state, double milliseconds)
|
public void handleSixaxis(byte[] gyro, byte[] accel, DS4State state, double milliseconds)
|
||||||
{
|
{
|
||||||
int currentYaw = (short)((ushort)(gyro[3] << 8) | gyro[2]); // Gyro Yaw
|
int currentYaw = (short)((ushort)(gyro[3] << 8) | gyro[2]);
|
||||||
int currentPitch = (short)((ushort)(gyro[1] << 8) | gyro[0]); // Gyro Pitch
|
int currentPitch = (short)((ushort)(gyro[1] << 8) | gyro[0]);
|
||||||
int currentRoll = (short)((ushort)(gyro[5] << 8) | gyro[4]); // Gyro Roll
|
int currentRoll = (short)((ushort)(gyro[5] << 8) | gyro[4]);
|
||||||
int AccelX = (short)((ushort)(accel[1] << 8) | accel[0]);
|
int AccelX = (short)((ushort)(accel[1] << 8) | accel[0]);
|
||||||
int AccelY = (short)((ushort)(accel[3] << 8) | accel[2]);
|
int AccelY = (short)((ushort)(accel[3] << 8) | accel[2]);
|
||||||
int AccelZ = (short)((ushort)(accel[5] << 8) | accel[4]);
|
int AccelZ = (short)((ushort)(accel[5] << 8) | accel[4]);
|
||||||
|
@ -33,7 +33,7 @@ namespace DS4Windows
|
|||||||
bool Touch1 { get { return _state.Touch1; } }
|
bool Touch1 { get { return _state.Touch1; } }
|
||||||
bool Touch2 { get { return _state.Touch2; } }
|
bool Touch2 { get { return _state.Touch2; } }
|
||||||
bool TouchButton { get { return _state.TouchButton; } }
|
bool TouchButton { get { return _state.TouchButton; } }
|
||||||
bool Touch1Finger { get { return _state.Touch1Finger; } }
|
bool Touch1Finger { get { return _state.Touch1Finger; } }
|
||||||
bool Touch2Fingers { get { return _state.Touch2Fingers; } }
|
bool Touch2Fingers { get { return _state.Touch2Fingers; } }
|
||||||
byte LX { get { return _state.LX; } }
|
byte LX { get { return _state.LX; } }
|
||||||
byte RX { get { return _state.RX; } }
|
byte RX { get { return _state.RX; } }
|
||||||
@ -44,8 +44,22 @@ namespace DS4Windows
|
|||||||
int Battery { get { return _state.Battery; } }
|
int Battery { get { return _state.Battery; } }
|
||||||
|
|
||||||
public int GyroYaw { get { return _state.Motion.gyroYaw; } }
|
public int GyroYaw { get { return _state.Motion.gyroYaw; } }
|
||||||
|
public int getGyroYaw()
|
||||||
|
{
|
||||||
|
return _state.Motion.gyroYaw;
|
||||||
|
}
|
||||||
|
|
||||||
public int GyroPitch { get { return _state.Motion.gyroPitch; } }
|
public int GyroPitch { get { return _state.Motion.gyroPitch; } }
|
||||||
|
public int getGyroPitch()
|
||||||
|
{
|
||||||
|
return _state.Motion.gyroPitch;
|
||||||
|
}
|
||||||
|
|
||||||
public int GyroRoll { get { return _state.Motion.gyroRoll; } }
|
public int GyroRoll { get { return _state.Motion.gyroRoll; } }
|
||||||
|
public int getGyroRoll()
|
||||||
|
{
|
||||||
|
return _state.Motion.gyroRoll;
|
||||||
|
}
|
||||||
|
|
||||||
public int AccelX { get { return _state.Motion.accelX; } }
|
public int AccelX { get { return _state.Motion.accelX; } }
|
||||||
public int getAccelX()
|
public int getAccelX()
|
||||||
|
Loading…
Reference in New Issue
Block a user