mirror of
https://github.com/cemu-project/DS4Windows.git
synced 2024-11-26 02:54:20 +01:00
Calculate stick angles for each state change
This commit is contained in:
parent
92b4e2da24
commit
6c83ca2470
@ -510,11 +510,10 @@ namespace DS4Windows
|
|||||||
CheckForHotkeys(ind, cState, pState);
|
CheckForHotkeys(ind, cState, pState);
|
||||||
if (eastertime)
|
if (eastertime)
|
||||||
EasterTime(ind);
|
EasterTime(ind);
|
||||||
/*if (LSCurve[ind] != 0 || RSCurve[ind] != 0 || LSDeadzone[ind] != 0 || RSDeadzone[ind] != 0 ||
|
|
||||||
L2Deadzone[ind] != 0 || R2Deadzone[ind] != 0 || LSSens[ind] != 0 || RSSens[ind] != 0 ||
|
cState = Mapping.SetCurveAndDeadzone(ind, cState);
|
||||||
L2Sens[ind] != 0 || R2Sens[ind] != 0) //if a curve or deadzone is in place
|
cState.calculateStickAngles();
|
||||||
*/
|
|
||||||
cState = Mapping.SetCurveAndDeadzone(ind, cState);
|
|
||||||
if (!recordingMacro && (!string.IsNullOrEmpty(tempprofilename[ind]) ||
|
if (!recordingMacro && (!string.IsNullOrEmpty(tempprofilename[ind]) ||
|
||||||
containsCustomAction(ind) || containsCustomExtras(ind) || getProfileActionCount(ind) > 0))
|
containsCustomAction(ind) || containsCustomExtras(ind) || getProfileActionCount(ind) > 0))
|
||||||
{
|
{
|
||||||
|
@ -431,6 +431,7 @@ namespace DS4Windows
|
|||||||
curvey = Math.Min(y, (y / max) * multimax);
|
curvey = Math.Min(y, (y / max) * multimax);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dState.LX = (byte)Math.Round(curvex, 0);
|
dState.LX = (byte)Math.Round(curvex, 0);
|
||||||
dState.LY = (byte)Math.Round(curvey, 0);
|
dState.LY = (byte)Math.Round(curvey, 0);
|
||||||
}
|
}
|
||||||
@ -464,6 +465,7 @@ namespace DS4Windows
|
|||||||
curvey = Math.Min(y, (y / max) * multimax);
|
curvey = Math.Min(y, (y / max) * multimax);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dState.RX = (byte)Math.Round(curvex, 0);
|
dState.RX = (byte)Math.Round(curvex, 0);
|
||||||
dState.RY = (byte)Math.Round(curvey, 0);
|
dState.RY = (byte)Math.Round(curvey, 0);
|
||||||
}
|
}
|
||||||
@ -2555,8 +2557,7 @@ namespace DS4Windows
|
|||||||
{
|
{
|
||||||
if (!analog)
|
if (!analog)
|
||||||
{
|
{
|
||||||
double angle = Math.Atan2((cState.LX - 127), -(cState.LY - 127));
|
double angle = cState.LSAngle;
|
||||||
angle = (angle >= 0 ? angle : (2 * Math.PI + angle)) * 180 / Math.PI;
|
|
||||||
result = cState.LX < 127 && (angle >= 210 && angle <= 330);
|
result = cState.LX < 127 && (angle >= 210 && angle <= 330);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2570,8 +2571,7 @@ namespace DS4Windows
|
|||||||
{
|
{
|
||||||
if (!analog)
|
if (!analog)
|
||||||
{
|
{
|
||||||
double angle = Math.Atan2((cState.LX - 127), -(cState.LY - 127));
|
double angle = cState.LSAngle;
|
||||||
angle = (angle >= 0 ? angle : (2 * Math.PI + angle)) * 180 / Math.PI;
|
|
||||||
result = cState.LY < 127 && (angle >= 300 || angle <= 60);
|
result = cState.LY < 127 && (angle >= 300 || angle <= 60);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2585,8 +2585,7 @@ namespace DS4Windows
|
|||||||
{
|
{
|
||||||
if (!analog)
|
if (!analog)
|
||||||
{
|
{
|
||||||
double angle = Math.Atan2((cState.RX - 127), -(cState.RY - 127));
|
double angle = cState.RSAngle;
|
||||||
angle = (angle >= 0 ? angle : (2 * Math.PI + angle)) * 180 / Math.PI;
|
|
||||||
result = cState.RX < 127 && (angle >= 210 && angle <= 330);
|
result = cState.RX < 127 && (angle >= 210 && angle <= 330);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2600,8 +2599,7 @@ namespace DS4Windows
|
|||||||
{
|
{
|
||||||
if (!analog)
|
if (!analog)
|
||||||
{
|
{
|
||||||
double angle = Math.Atan2((cState.RX - 127), -(cState.RY - 127));
|
double angle = cState.RSAngle;
|
||||||
angle = (angle >= 0 ? angle : (2 * Math.PI + angle)) * 180 / Math.PI;
|
|
||||||
result = cState.RY < 127 && (angle >= 300 || angle <= 60);
|
result = cState.RY < 127 && (angle >= 300 || angle <= 60);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2615,8 +2613,7 @@ namespace DS4Windows
|
|||||||
{
|
{
|
||||||
if (!analog)
|
if (!analog)
|
||||||
{
|
{
|
||||||
double angle = Math.Atan2((cState.LX - 127), -(cState.LY - 127));
|
double angle = cState.LSAngle;
|
||||||
angle = (angle >= 0 ? angle : (2 * Math.PI + angle)) * 180 / Math.PI;
|
|
||||||
result = cState.LX > 127 && (angle >= 30 && angle <= 150);
|
result = cState.LX > 127 && (angle >= 30 && angle <= 150);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2630,8 +2627,7 @@ namespace DS4Windows
|
|||||||
{
|
{
|
||||||
if (!analog)
|
if (!analog)
|
||||||
{
|
{
|
||||||
double angle = Math.Atan2((cState.LX - 127), -(cState.LY - 127));
|
double angle = cState.LSAngle;
|
||||||
angle = (angle >= 0 ? angle : (2 * Math.PI + angle)) * 180 / Math.PI;
|
|
||||||
result = cState.LY > 127 && (angle >= 120 && angle <= 240);
|
result = cState.LY > 127 && (angle >= 120 && angle <= 240);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2645,8 +2641,7 @@ namespace DS4Windows
|
|||||||
{
|
{
|
||||||
if (!analog)
|
if (!analog)
|
||||||
{
|
{
|
||||||
double angle = Math.Atan2((cState.RX - 127), -(cState.RY - 127));
|
double angle = cState.RSAngle;
|
||||||
angle = (angle >= 0 ? angle : (2 * Math.PI + angle)) * 180 / Math.PI;
|
|
||||||
result = cState.RX > 127 && (angle >= 30 && angle <= 150);
|
result = cState.RX > 127 && (angle >= 30 && angle <= 150);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2660,8 +2655,7 @@ namespace DS4Windows
|
|||||||
{
|
{
|
||||||
if (!analog)
|
if (!analog)
|
||||||
{
|
{
|
||||||
double angle = Math.Atan2((cState.RX - 127), -(cState.RY - 127));
|
double angle = cState.RSAngle;
|
||||||
angle = (angle >= 0 ? angle : (2 * Math.PI + angle)) * 180 / Math.PI;
|
|
||||||
result = cState.RY > 127 && (angle >= 120 && angle <= 240);
|
result = cState.RY > 127 && (angle >= 120 && angle <= 240);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -17,6 +17,8 @@ namespace DS4Windows
|
|||||||
public byte FrameCounter; // 0, 1, 2...62, 63, 0....
|
public byte FrameCounter; // 0, 1, 2...62, 63, 0....
|
||||||
public byte TouchPacketCounter; // we break these out automatically
|
public byte TouchPacketCounter; // we break these out automatically
|
||||||
public byte Battery; // 0 for charging, 10/20/30/40/50/60/70/80/90/100 for percentage of full
|
public byte Battery; // 0 for charging, 10/20/30/40/50/60/70/80/90/100 for percentage of full
|
||||||
|
public double LSAngle;
|
||||||
|
public double RSAngle;
|
||||||
|
|
||||||
public DS4State()
|
public DS4State()
|
||||||
{
|
{
|
||||||
@ -29,6 +31,8 @@ namespace DS4Windows
|
|||||||
FrameCounter = 255; // only actually has 6 bits, so this is a null indicator
|
FrameCounter = 255; // only actually has 6 bits, so this is a null indicator
|
||||||
TouchPacketCounter = 255; // 8 bits, no great junk value
|
TouchPacketCounter = 255; // 8 bits, no great junk value
|
||||||
Battery = 0;
|
Battery = 0;
|
||||||
|
LSAngle = 0.0;
|
||||||
|
RSAngle = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DS4State(DS4State state)
|
public DS4State(DS4State state)
|
||||||
@ -65,6 +69,8 @@ namespace DS4Windows
|
|||||||
RY = state.RY;
|
RY = state.RY;
|
||||||
FrameCounter = state.FrameCounter;
|
FrameCounter = state.FrameCounter;
|
||||||
Battery = state.Battery;
|
Battery = state.Battery;
|
||||||
|
LSAngle = state.LSAngle;
|
||||||
|
RSAngle = state.RSAngle;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DS4State Clone()
|
public DS4State Clone()
|
||||||
@ -106,7 +112,19 @@ namespace DS4Windows
|
|||||||
state.RY = RY;
|
state.RY = RY;
|
||||||
state.FrameCounter = FrameCounter;
|
state.FrameCounter = FrameCounter;
|
||||||
state.Battery = Battery;
|
state.Battery = Battery;
|
||||||
|
state.LSAngle = LSAngle;
|
||||||
|
state.RSAngle = RSAngle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void calculateStickAngles()
|
||||||
|
{
|
||||||
|
double lsangle = Math.Atan2((LX - 127), -(LY - 127));
|
||||||
|
lsangle = (lsangle >= 0 ? lsangle : (2 * Math.PI + lsangle)) * 180 / Math.PI;
|
||||||
|
LSAngle = lsangle;
|
||||||
|
|
||||||
|
double rsangle = Math.Atan2((RX - 127), -(RY - 127));
|
||||||
|
rsangle = (rsangle >= 0 ? rsangle : (2 * Math.PI + rsangle)) * 180 / Math.PI;
|
||||||
|
RSAngle = rsangle;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user