Implemented rawps2 stubs
This commit is contained in:
parent
bac24118c2
commit
a41ced099c
1 changed files with 61 additions and 7 deletions
|
|
@ -137,6 +137,9 @@ protected:
|
|||
float Value;
|
||||
float DeadZone;
|
||||
float Multiplier;
|
||||
float DigitalThreshold;
|
||||
EJoyCurve ResponseCurvePreset;
|
||||
CubicBezier ResponseCurve;
|
||||
EJoyAxis GameAxis;
|
||||
uint8_t ButtonValue;
|
||||
};
|
||||
|
|
@ -144,6 +147,8 @@ protected:
|
|||
{
|
||||
EJoyAxis GameAxis;
|
||||
float Multiplier;
|
||||
float DigitalThreshold;
|
||||
EJoyCurve ResponseCurvePreset;
|
||||
};
|
||||
enum
|
||||
{
|
||||
|
|
@ -364,11 +369,11 @@ static const char *AxisNames[] =
|
|||
|
||||
FRawPS2Controller::DefaultAxisConfig FRawPS2Controller::DefaultAxes[NUM_AXES] =
|
||||
{
|
||||
// Game axis, multiplier
|
||||
{ JOYAXIS_Side, JOYSENSITIVITY_DEFAULT }, // ThumbLX
|
||||
{ JOYAXIS_Forward, JOYSENSITIVITY_DEFAULT }, // ThumbLY
|
||||
{ JOYAXIS_Yaw, JOYSENSITIVITY_DEFAULT }, // ThumbRX
|
||||
{ JOYAXIS_Pitch, JOYSENSITIVITY_DEFAULT }, // ThumbRY
|
||||
// Game axis, multiplier, digital threshold, response curve A, response curve B
|
||||
{ JOYAXIS_Side, JOYSENSITIVITY_DEFAULT, JOYTHRESH_STICK_X, JOYCURVE_DEFAULT }, // ThumbLX
|
||||
{ JOYAXIS_Forward, JOYSENSITIVITY_DEFAULT, JOYTHRESH_STICK_Y, JOYCURVE_DEFAULT }, // ThumbLY
|
||||
{ JOYAXIS_Yaw, JOYSENSITIVITY_DEFAULT, JOYTHRESH_STICK_X, JOYCURVE_DEFAULT }, // ThumbRX
|
||||
{ JOYAXIS_Pitch, JOYSENSITIVITY_DEFAULT, JOYTHRESH_STICK_Y, JOYCURVE_DEFAULT }, // ThumbRY
|
||||
};
|
||||
|
||||
// CODE --------------------------------------------------------------------
|
||||
|
|
@ -559,11 +564,16 @@ void FRawPS2Controller::ProcessThumbstick(int value1, AxisInfo *axis1, int value
|
|||
axisval2 = value2 * (2.0 / 255) - 1.0;
|
||||
axisval1 = Joy_RemoveDeadZone(axisval1, axis1->DeadZone, NULL);
|
||||
axisval2 = Joy_RemoveDeadZone(axisval2, axis2->DeadZone, NULL);
|
||||
axisval1 = Joy_ApplyResponseCurveBezier(axis1->ResponseCurve, axisval1);
|
||||
axisval2 = Joy_ApplyResponseCurveBezier(axis2->ResponseCurve, axisval2);
|
||||
axis1->Value = float(axisval1);
|
||||
axis2->Value = float(axisval2);
|
||||
|
||||
// We store all four buttons in the first axis and ignore the second.
|
||||
buttonstate = Joy_XYAxesToButtons(axisval1, axisval2);
|
||||
buttonstate = Joy_XYAxesToButtons(
|
||||
(abs(axisval1) < axis1->DigitalThreshold) ? 0 : axisval1,
|
||||
(abs(axisval2) < axis2->DigitalThreshold) ? 0 : axisval2
|
||||
);
|
||||
Joy_GenerateButtonEvents(axis1->ButtonValue, buttonstate, 4, base);
|
||||
axis1->ButtonValue = buttonstate;
|
||||
}
|
||||
|
|
@ -801,7 +811,11 @@ float FRawPS2Controller::GetAxisScale(int axis)
|
|||
|
||||
float FRawPS2Controller::GetAxisDigitalThreshold(int axis)
|
||||
{
|
||||
return 0;
|
||||
if (unsigned(axis) < NUM_AXES)
|
||||
{
|
||||
return Axes[axis].DigitalThreshold;
|
||||
}
|
||||
return JOYTHRESH_DEFAULT;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
|
@ -812,6 +826,10 @@ float FRawPS2Controller::GetAxisDigitalThreshold(int axis)
|
|||
|
||||
EJoyCurve FRawPS2Controller::GetAxisResponseCurve(int axis)
|
||||
{
|
||||
if (unsigned(axis) < NUM_AXES)
|
||||
{
|
||||
return Axes[axis].ResponseCurvePreset;
|
||||
}
|
||||
return JOYCURVE_DEFAULT;
|
||||
}
|
||||
|
||||
|
|
@ -823,6 +841,10 @@ EJoyCurve FRawPS2Controller::GetAxisResponseCurve(int axis)
|
|||
|
||||
float FRawPS2Controller::GetAxisResponseCurvePoint(int axis, int point)
|
||||
{
|
||||
if (unsigned(axis) < NUM_AXES && unsigned(point) < 4)
|
||||
{
|
||||
return Axes[axis].ResponseCurve.pts[point];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -876,6 +898,10 @@ void FRawPS2Controller::SetAxisScale(int axis, float scale)
|
|||
|
||||
void FRawPS2Controller::SetAxisDigitalThreshold(int axis, float threshold)
|
||||
{
|
||||
if (unsigned(axis) < NUM_AXES)
|
||||
{
|
||||
Axes[axis].DigitalThreshold = threshold;
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
|
@ -886,6 +912,13 @@ void FRawPS2Controller::SetAxisDigitalThreshold(int axis, float threshold)
|
|||
|
||||
void FRawPS2Controller::SetAxisResponseCurve(int axis, EJoyCurve preset)
|
||||
{
|
||||
if (unsigned(axis) < NUM_AXES)
|
||||
{
|
||||
if (preset >= NUM_JOYCURVE || preset < JOYCURVE_CUSTOM) return;
|
||||
Axes[axis].ResponseCurvePreset = preset;
|
||||
if (preset == JOYCURVE_CUSTOM) return;
|
||||
Axes[axis].ResponseCurve = JOYCURVE[preset];
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
|
@ -896,6 +929,11 @@ void FRawPS2Controller::SetAxisResponseCurve(int axis, EJoyCurve preset)
|
|||
|
||||
void FRawPS2Controller::SetAxisResponseCurvePoint(int axis, int point, float value)
|
||||
{
|
||||
if (unsigned(axis) < NUM_AXES && unsigned(point) < 4)
|
||||
{
|
||||
Axes[axis].ResponseCurvePreset = JOYCURVE_CUSTOM;
|
||||
Axes[axis].ResponseCurve.pts[point] = value;
|
||||
}
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
|
|
@ -906,6 +944,10 @@ void FRawPS2Controller::SetAxisResponseCurvePoint(int axis, int point, float val
|
|||
|
||||
bool FRawPS2Controller::IsAxisDeadZoneDefault(int axis)
|
||||
{
|
||||
if (unsigned(axis) < NUM_AXES)
|
||||
{
|
||||
return Axes[axis].DeadZone == JOYDEADZONE_DEFAULT;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -917,6 +959,10 @@ bool FRawPS2Controller::IsAxisDeadZoneDefault(int axis)
|
|||
|
||||
bool FRawPS2Controller::IsAxisScaleDefault(int axis)
|
||||
{
|
||||
if (unsigned(axis) < NUM_AXES)
|
||||
{
|
||||
return Axes[axis].Multiplier == DefaultAxes[axis].Multiplier;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -928,6 +974,10 @@ bool FRawPS2Controller::IsAxisScaleDefault(int axis)
|
|||
|
||||
bool FRawPS2Controller::IsAxisDigitalThresholdDefault(int axis)
|
||||
{
|
||||
if (unsigned(axis) < NUM_AXES)
|
||||
{
|
||||
return Axes[axis].DigitalThreshold == DefaultAxes[axis].DigitalThreshold;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -939,6 +989,10 @@ bool FRawPS2Controller::IsAxisDigitalThresholdDefault(int axis)
|
|||
|
||||
bool FRawPS2Controller::IsAxisResponseCurveDefault(int axis)
|
||||
{
|
||||
if (unsigned(axis) < NUM_AXES)
|
||||
{
|
||||
return Axes[axis].ResponseCurvePreset == DefaultAxes[axis].ResponseCurvePreset;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue