ControllerEmu::Cursor: Add input radius/shape settings to IR Cursor mappings to allow use of round inputs in absolute mode. Make relative input option obey the center/width/height settings. Make the mapping indicator pretty and actually show what the relative/center/w/h settings are doing.

This commit is contained in:
Jordan Woyak
2018-12-30 09:10:32 -06:00
parent 247fa8c628
commit 7a00f55cfa
10 changed files with 292 additions and 211 deletions

View File

@ -37,10 +37,10 @@ AnalogStick::AnalogStick(const char* const name_, const char* const ui_name_,
AddReshapingSettings(GetGateRadiusAtAngle(0.0), 0.0, 50);
}
AnalogStick::StateData AnalogStick::GetState(bool adjusted)
AnalogStick::StateData AnalogStick::GetReshapableState(bool adjusted)
{
ControlState y = controls[0]->control_ref->State() - controls[1]->control_ref->State();
ControlState x = controls[3]->control_ref->State() - controls[2]->control_ref->State();
const ControlState y = controls[0]->control_ref->State() - controls[1]->control_ref->State();
const ControlState x = controls[3]->control_ref->State() - controls[2]->control_ref->State();
// Return raw values. (used in UI)
if (!adjusted)
@ -51,6 +51,11 @@ AnalogStick::StateData AnalogStick::GetState(bool adjusted)
return Reshape(x, y, modifier);
}
AnalogStick::StateData AnalogStick::GetState()
{
return GetReshapableState(true);
}
ControlState AnalogStick::GetGateRadiusAtAngle(double ang) const
{
return m_stick_gate->GetRadiusAtAngle(ang);