mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-01-15 11:25:13 +00:00
Add motion controls toggle (#2029)
* Add motion controls toggle * clang
This commit is contained in:
parent
86038e6a71
commit
c3ecf599ad
|
@ -47,6 +47,7 @@ static std::string updateChannel;
|
||||||
static std::string backButtonBehavior = "left";
|
static std::string backButtonBehavior = "left";
|
||||||
static bool useSpecialPad = false;
|
static bool useSpecialPad = false;
|
||||||
static int specialPadClass = 1;
|
static int specialPadClass = 1;
|
||||||
|
static bool isMotionControlsEnabled = true;
|
||||||
static bool isDebugDump = false;
|
static bool isDebugDump = false;
|
||||||
static bool isShaderDebug = false;
|
static bool isShaderDebug = false;
|
||||||
static bool isShowSplash = false;
|
static bool isShowSplash = false;
|
||||||
|
@ -172,6 +173,10 @@ int getSpecialPadClass() {
|
||||||
return specialPadClass;
|
return specialPadClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool getIsMotionControlsEnabled() {
|
||||||
|
return isMotionControlsEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
bool debugDump() {
|
bool debugDump() {
|
||||||
return isDebugDump;
|
return isDebugDump;
|
||||||
}
|
}
|
||||||
|
@ -368,6 +373,10 @@ void setSpecialPadClass(int type) {
|
||||||
specialPadClass = type;
|
specialPadClass = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setIsMotionControlsEnabled(bool use) {
|
||||||
|
isMotionControlsEnabled = use;
|
||||||
|
}
|
||||||
|
|
||||||
void setSeparateUpdateEnabled(bool use) {
|
void setSeparateUpdateEnabled(bool use) {
|
||||||
separateupdatefolder = use;
|
separateupdatefolder = use;
|
||||||
}
|
}
|
||||||
|
@ -594,6 +603,7 @@ void load(const std::filesystem::path& path) {
|
||||||
backButtonBehavior = toml::find_or<std::string>(input, "backButtonBehavior", "left");
|
backButtonBehavior = toml::find_or<std::string>(input, "backButtonBehavior", "left");
|
||||||
useSpecialPad = toml::find_or<bool>(input, "useSpecialPad", false);
|
useSpecialPad = toml::find_or<bool>(input, "useSpecialPad", false);
|
||||||
specialPadClass = toml::find_or<int>(input, "specialPadClass", 1);
|
specialPadClass = toml::find_or<int>(input, "specialPadClass", 1);
|
||||||
|
isMotionControlsEnabled = toml::find_or<bool>(input, "isMotionControlsEnabled", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.contains("GPU")) {
|
if (data.contains("GPU")) {
|
||||||
|
@ -709,6 +719,7 @@ void save(const std::filesystem::path& path) {
|
||||||
data["Input"]["backButtonBehavior"] = backButtonBehavior;
|
data["Input"]["backButtonBehavior"] = backButtonBehavior;
|
||||||
data["Input"]["useSpecialPad"] = useSpecialPad;
|
data["Input"]["useSpecialPad"] = useSpecialPad;
|
||||||
data["Input"]["specialPadClass"] = specialPadClass;
|
data["Input"]["specialPadClass"] = specialPadClass;
|
||||||
|
data["Input"]["isMotionControlsEnabled"] = isMotionControlsEnabled;
|
||||||
data["GPU"]["screenWidth"] = screenWidth;
|
data["GPU"]["screenWidth"] = screenWidth;
|
||||||
data["GPU"]["screenHeight"] = screenHeight;
|
data["GPU"]["screenHeight"] = screenHeight;
|
||||||
data["GPU"]["nullGpu"] = isNullGpu;
|
data["GPU"]["nullGpu"] = isNullGpu;
|
||||||
|
|
|
@ -38,6 +38,7 @@ int getCursorHideTimeout();
|
||||||
std::string getBackButtonBehavior();
|
std::string getBackButtonBehavior();
|
||||||
bool getUseSpecialPad();
|
bool getUseSpecialPad();
|
||||||
int getSpecialPadClass();
|
int getSpecialPadClass();
|
||||||
|
bool getIsMotionControlsEnabled();
|
||||||
|
|
||||||
u32 getScreenWidth();
|
u32 getScreenWidth();
|
||||||
u32 getScreenHeight();
|
u32 getScreenHeight();
|
||||||
|
@ -84,6 +85,7 @@ void setCursorHideTimeout(int newcursorHideTimeout);
|
||||||
void setBackButtonBehavior(const std::string& type);
|
void setBackButtonBehavior(const std::string& type);
|
||||||
void setUseSpecialPad(bool use);
|
void setUseSpecialPad(bool use);
|
||||||
void setSpecialPadClass(int type);
|
void setSpecialPadClass(int type);
|
||||||
|
void setIsMotionControlsEnabled(bool use);
|
||||||
|
|
||||||
void setLogType(const std::string& type);
|
void setLogType(const std::string& type);
|
||||||
void setLogFilter(const std::string& type);
|
void setLogFilter(const std::string& type);
|
||||||
|
@ -139,4 +141,4 @@ void setDefaultValues();
|
||||||
|
|
||||||
// settings
|
// settings
|
||||||
u32 GetLanguage();
|
u32 GetLanguage();
|
||||||
}; // namespace Config
|
}; // namespace Config
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <SDL3/SDL.h>
|
#include <SDL3/SDL.h>
|
||||||
|
#include "common/config.h"
|
||||||
#include "common/logging/log.h"
|
#include "common/logging/log.h"
|
||||||
#include "core/libraries/kernel/time.h"
|
#include "core/libraries/kernel/time.h"
|
||||||
#include "core/libraries/pad/pad.h"
|
#include "core/libraries/pad/pad.h"
|
||||||
|
@ -189,11 +190,6 @@ void GameController::CalculateOrientation(Libraries::Pad::OrbisFVector3& acceler
|
||||||
gz += Kp * ez + Ki * eInt[2];
|
gz += Kp * ez + Ki * eInt[2];
|
||||||
|
|
||||||
//// Integrate rate of change of quaternion
|
//// Integrate rate of change of quaternion
|
||||||
// float pa = q2, pb = q3, pc = q4;
|
|
||||||
// q1 += (-q2 * gx - q3 * gy - q4 * gz) * (0.5f * deltaTime);
|
|
||||||
// q2 += (pa * gx + pb * gz - pc * gy) * (0.5f * deltaTime);
|
|
||||||
// q3 += (pb * gy - pa * gz + pc * gx) * (0.5f * deltaTime);
|
|
||||||
// q4 += (pc * gz + pa * gy - pb * gx) * (0.5f * deltaTime);
|
|
||||||
q1 += (-q2 * gx - q3 * gy - q4 * gz) * (0.5f * deltaTime);
|
q1 += (-q2 * gx - q3 * gy - q4 * gz) * (0.5f * deltaTime);
|
||||||
q2 += (q1 * gx + q3 * gz - q4 * gy) * (0.5f * deltaTime);
|
q2 += (q1 * gx + q3 * gz - q4 * gy) * (0.5f * deltaTime);
|
||||||
q3 += (q1 * gy - q2 * gz + q4 * gx) * (0.5f * deltaTime);
|
q3 += (q1 * gy - q2 * gz + q4 * gx) * (0.5f * deltaTime);
|
||||||
|
@ -247,18 +243,21 @@ void GameController::TryOpenSDLController() {
|
||||||
int gamepad_count;
|
int gamepad_count;
|
||||||
SDL_JoystickID* gamepads = SDL_GetGamepads(&gamepad_count);
|
SDL_JoystickID* gamepads = SDL_GetGamepads(&gamepad_count);
|
||||||
m_sdl_gamepad = gamepad_count > 0 ? SDL_OpenGamepad(gamepads[0]) : nullptr;
|
m_sdl_gamepad = gamepad_count > 0 ? SDL_OpenGamepad(gamepads[0]) : nullptr;
|
||||||
if (SDL_SetGamepadSensorEnabled(m_sdl_gamepad, SDL_SENSOR_GYRO, true)) {
|
if (Config::getIsMotionControlsEnabled()) {
|
||||||
gyro_poll_rate = SDL_GetGamepadSensorDataRate(m_sdl_gamepad, SDL_SENSOR_GYRO);
|
if (SDL_SetGamepadSensorEnabled(m_sdl_gamepad, SDL_SENSOR_GYRO, true)) {
|
||||||
LOG_INFO(Input, "Gyro initialized, poll rate: {}", gyro_poll_rate);
|
gyro_poll_rate = SDL_GetGamepadSensorDataRate(m_sdl_gamepad, SDL_SENSOR_GYRO);
|
||||||
} else {
|
LOG_INFO(Input, "Gyro initialized, poll rate: {}", gyro_poll_rate);
|
||||||
LOG_ERROR(Input, "Failed to initialize gyro controls for gamepad");
|
} else {
|
||||||
}
|
LOG_ERROR(Input, "Failed to initialize gyro controls for gamepad");
|
||||||
if (SDL_SetGamepadSensorEnabled(m_sdl_gamepad, SDL_SENSOR_ACCEL, true)) {
|
}
|
||||||
accel_poll_rate = SDL_GetGamepadSensorDataRate(m_sdl_gamepad, SDL_SENSOR_ACCEL);
|
if (SDL_SetGamepadSensorEnabled(m_sdl_gamepad, SDL_SENSOR_ACCEL, true)) {
|
||||||
LOG_INFO(Input, "Accel initialized, poll rate: {}", accel_poll_rate);
|
accel_poll_rate = SDL_GetGamepadSensorDataRate(m_sdl_gamepad, SDL_SENSOR_ACCEL);
|
||||||
} else {
|
LOG_INFO(Input, "Accel initialized, poll rate: {}", accel_poll_rate);
|
||||||
LOG_ERROR(Input, "Failed to initialize accel controls for gamepad");
|
} else {
|
||||||
|
LOG_ERROR(Input, "Failed to initialize accel controls for gamepad");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_free(gamepads);
|
SDL_free(gamepads);
|
||||||
|
|
||||||
SetLightBarRGB(0, 0, 255);
|
SetLightBarRGB(0, 0, 255);
|
||||||
|
|
|
@ -339,6 +339,8 @@ void SettingsDialog::LoadValuesFromConfig() {
|
||||||
toml::find_or<std::string>(data, "Input", "backButtonBehavior", "left"));
|
toml::find_or<std::string>(data, "Input", "backButtonBehavior", "left"));
|
||||||
int index = ui->backButtonBehaviorComboBox->findData(backButtonBehavior);
|
int index = ui->backButtonBehaviorComboBox->findData(backButtonBehavior);
|
||||||
ui->backButtonBehaviorComboBox->setCurrentIndex(index != -1 ? index : 0);
|
ui->backButtonBehaviorComboBox->setCurrentIndex(index != -1 ? index : 0);
|
||||||
|
ui->motionControlsCheckBox->setChecked(
|
||||||
|
toml::find_or<bool>(data, "Input", "isMotionControlsEnabled", true));
|
||||||
|
|
||||||
ui->removeFolderButton->setEnabled(!ui->gameFoldersListWidget->selectedItems().isEmpty());
|
ui->removeFolderButton->setEnabled(!ui->gameFoldersListWidget->selectedItems().isEmpty());
|
||||||
ResetInstallFolders();
|
ResetInstallFolders();
|
||||||
|
@ -532,6 +534,7 @@ void SettingsDialog::UpdateSettings() {
|
||||||
|
|
||||||
const QVector<std::string> TouchPadIndex = {"left", "center", "right", "none"};
|
const QVector<std::string> TouchPadIndex = {"left", "center", "right", "none"};
|
||||||
Config::setBackButtonBehavior(TouchPadIndex[ui->backButtonBehaviorComboBox->currentIndex()]);
|
Config::setBackButtonBehavior(TouchPadIndex[ui->backButtonBehaviorComboBox->currentIndex()]);
|
||||||
|
Config::setIsMotionControlsEnabled(ui->motionControlsCheckBox->isChecked());
|
||||||
Config::setFullscreenMode(ui->fullscreenCheckBox->isChecked());
|
Config::setFullscreenMode(ui->fullscreenCheckBox->isChecked());
|
||||||
Config::setisTrophyPopupDisabled(ui->disableTrophycheckBox->isChecked());
|
Config::setisTrophyPopupDisabled(ui->disableTrophycheckBox->isChecked());
|
||||||
Config::setPlayBGM(ui->playBGMCheckBox->isChecked());
|
Config::setPlayBGM(ui->playBGMCheckBox->isChecked());
|
||||||
|
|
|
@ -815,6 +815,13 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="motionControlsCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable Motion Controls</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWidget" name="controllerWidgetSpacer" native="true">
|
<widget class="QWidget" name="controllerWidgetSpacer" native="true">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
|
|
Loading…
Reference in a new issue