mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-01-30 12:32:43 +00:00
Input: misc updates to some functions in PadHandler
This commit is contained in:
parent
1dc2eb1cc8
commit
17f335648c
@ -179,22 +179,24 @@ std::tuple<u16, u16> PadHandlerBase::NormalizeStickDeadzone(s32 inX, s32 inY, u3
|
||||
|
||||
if (dzRange > 0.f)
|
||||
{
|
||||
const float mag = std::min(sqrtf(X*X + Y*Y), 1.f);
|
||||
const float mag = std::min(sqrtf(X * X + Y * Y), 1.f);
|
||||
|
||||
if (mag <= 0)
|
||||
{
|
||||
return std::tuple<u16, u16>(ConvertAxis(X), ConvertAxis(Y));
|
||||
}
|
||||
|
||||
if (mag > dzRange) {
|
||||
float pos = lerp(0.13f, 1.f, (mag - dzRange) / (1 - dzRange));
|
||||
float scale = pos / mag;
|
||||
if (mag > dzRange)
|
||||
{
|
||||
const float pos = std::lerp(0.13f, 1.f, (mag - dzRange) / (1 - dzRange));
|
||||
const float scale = pos / mag;
|
||||
X = X * scale;
|
||||
Y = Y * scale;
|
||||
}
|
||||
else {
|
||||
float pos = lerp(0.f, 0.13f, mag / dzRange);
|
||||
float scale = pos / mag;
|
||||
else
|
||||
{
|
||||
const float pos = std::lerp(0.f, 0.13f, mag / dzRange);
|
||||
const float scale = pos / mag;
|
||||
X = X * scale;
|
||||
Y = Y * scale;
|
||||
}
|
||||
@ -244,32 +246,32 @@ std::tuple<u16, u16> PadHandlerBase::ConvertToSquirclePoint(u16 inX, u16 inY, in
|
||||
return std::tuple<u16, u16>(newX, newY);
|
||||
}
|
||||
|
||||
std::string PadHandlerBase::name_string()
|
||||
std::string PadHandlerBase::name_string() const
|
||||
{
|
||||
return m_name_string;
|
||||
}
|
||||
|
||||
size_t PadHandlerBase::max_devices()
|
||||
size_t PadHandlerBase::max_devices() const
|
||||
{
|
||||
return m_max_devices;
|
||||
}
|
||||
|
||||
bool PadHandlerBase::has_config()
|
||||
bool PadHandlerBase::has_config() const
|
||||
{
|
||||
return b_has_config;
|
||||
}
|
||||
|
||||
bool PadHandlerBase::has_rumble()
|
||||
bool PadHandlerBase::has_rumble() const
|
||||
{
|
||||
return b_has_rumble;
|
||||
}
|
||||
|
||||
bool PadHandlerBase::has_deadzones()
|
||||
bool PadHandlerBase::has_deadzones() const
|
||||
{
|
||||
return b_has_deadzones;
|
||||
}
|
||||
|
||||
bool PadHandlerBase::has_led()
|
||||
bool PadHandlerBase::has_led() const
|
||||
{
|
||||
return b_has_led;
|
||||
}
|
||||
@ -332,8 +334,8 @@ void PadHandlerBase::get_next_button_press(const std::string& pad_id, const std:
|
||||
std::pair<u16, std::string> pressed_button = { 0, "" };
|
||||
for (const auto& button : button_list)
|
||||
{
|
||||
u32 keycode = button.first;
|
||||
u16 value = data[keycode];
|
||||
const u32 keycode = button.first;
|
||||
const u16 value = data[keycode];
|
||||
|
||||
if (!get_blacklist && std::find(blacklist.begin(), blacklist.end(), keycode) != blacklist.end())
|
||||
continue;
|
||||
|
@ -327,22 +327,22 @@ protected:
|
||||
}
|
||||
|
||||
// Search an unordered map for a string value and return found keycode
|
||||
int FindKeyCode(const std::unordered_map<u32, std::string>& map, const cfg::string& name, bool fallback = true);
|
||||
static int FindKeyCode(const std::unordered_map<u32, std::string>& map, const cfg::string& name, bool fallback = true);
|
||||
|
||||
// Search an unordered map for a string value and return found keycode
|
||||
long FindKeyCode(const std::unordered_map<u64, std::string>& map, const cfg::string& name, bool fallback = true);
|
||||
static long FindKeyCode(const std::unordered_map<u64, std::string>& map, const cfg::string& name, bool fallback = true);
|
||||
|
||||
// Search an unordered map for a string value and return found keycode
|
||||
int FindKeyCodeByString(const std::unordered_map<u32, std::string>& map, const std::string& name, bool fallback = true);
|
||||
static int FindKeyCodeByString(const std::unordered_map<u32, std::string>& map, const std::string& name, bool fallback = true);
|
||||
|
||||
// Search an unordered map for a string value and return found keycode
|
||||
long FindKeyCodeByString(const std::unordered_map<u64, std::string>& map, const std::string& name, bool fallback = true);
|
||||
static long FindKeyCodeByString(const std::unordered_map<u64, std::string>& map, const std::string& name, bool fallback = true);
|
||||
|
||||
// Get new scaled value between 0 and 255 based on its minimum and maximum
|
||||
float ScaleStickInput(s32 raw_value, int minimum, int maximum);
|
||||
static float ScaleStickInput(s32 raw_value, int minimum, int maximum);
|
||||
|
||||
// Get new scaled value between -255 and 255 based on its minimum and maximum
|
||||
float ScaleStickInput2(s32 raw_value, int minimum, int maximum);
|
||||
static float ScaleStickInput2(s32 raw_value, int minimum, int maximum);
|
||||
|
||||
// Get normalized trigger value based on the range defined by a threshold
|
||||
u16 NormalizeTriggerInput(u16 value, int threshold);
|
||||
@ -359,18 +359,18 @@ protected:
|
||||
std::tuple<u16, u16> NormalizeStickDeadzone(s32 inX, s32 inY, u32 deadzone);
|
||||
|
||||
// get clamped value between 0 and 255
|
||||
u16 Clamp0To255(f32 input);
|
||||
static u16 Clamp0To255(f32 input);
|
||||
// get clamped value between 0 and 1023
|
||||
u16 Clamp0To1023(f32 input);
|
||||
static u16 Clamp0To1023(f32 input);
|
||||
|
||||
// input has to be [-1,1]. result will be [0,255]
|
||||
u16 ConvertAxis(float value);
|
||||
static u16 ConvertAxis(float value);
|
||||
|
||||
// The DS3, (and i think xbox controllers) give a 'square-ish' type response, so that the corners will give (almost)max x/y instead of the ~30x30 from a perfect circle
|
||||
// using a simple scale/sensitivity increase would *work* although it eats a chunk of our usable range in exchange
|
||||
// this might be the best for now, in practice it seems to push the corners to max of 20x20, with a squircle_factor of 8000
|
||||
// This function assumes inX and inY is already in 0-255
|
||||
std::tuple<u16, u16> ConvertToSquirclePoint(u16 inX, u16 inY, int squircle_factor);
|
||||
static std::tuple<u16, u16> ConvertToSquirclePoint(u16 inX, u16 inY, int squircle_factor);
|
||||
|
||||
public:
|
||||
s32 thumb_min = 0;
|
||||
@ -383,12 +383,12 @@ public:
|
||||
|
||||
pad_handler m_type;
|
||||
|
||||
std::string name_string();
|
||||
size_t max_devices();
|
||||
bool has_config();
|
||||
bool has_rumble();
|
||||
bool has_deadzones();
|
||||
bool has_led();
|
||||
std::string name_string() const;
|
||||
size_t max_devices() const;
|
||||
bool has_config() const;
|
||||
bool has_rumble() const;
|
||||
bool has_deadzones() const;
|
||||
bool has_led() const;
|
||||
|
||||
static std::string get_config_dir(pad_handler type, const std::string& title_id = "");
|
||||
static std::string get_config_filename(int i, const std::string& title_id = "");
|
||||
|
Loading…
x
Reference in New Issue
Block a user