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

@ -58,7 +58,7 @@ class ReshapableInput : public ControlGroup
public:
ReshapableInput(std::string name, std::string ui_name, GroupType type);
struct StateData
struct ReshapeData
{
ControlState x{};
ControlState y{};
@ -77,13 +77,13 @@ public:
ControlState GetInputRadiusAtAngle(double ang) const;
virtual ControlState GetGateRadiusAtAngle(double ang) const = 0;
virtual StateData GetState(bool adjusted = true) = 0;
virtual ReshapeData GetReshapableState(bool adjusted) = 0;
protected:
void AddReshapingSettings(ControlState default_radius, ControlState default_shape,
int max_deadzone);
StateData Reshape(ControlState x, ControlState y, ControlState modifier = 0.0);
ReshapeData Reshape(ControlState x, ControlState y, ControlState modifier = 0.0);
private:
ControlState CalculateInputShapeRadiusAtAngle(double ang) const;