mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 17:19:44 -06:00
Emulated Wiimote: Added option to use Analog 2 for roll and pitch. Now you can use the regular controls on Analog 1 and roll and pitch on Analog 2.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2240 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -95,7 +95,8 @@ void Config::Load(bool ChangePad)
|
||||
iniFile.Get(SectionName.c_str(), "right_y", &WiiMoteEmu::PadMapping[i].Axis.Ry, 3);
|
||||
iniFile.Get(SectionName.c_str(), "l_trigger", &WiiMoteEmu::PadMapping[i].Axis.Tl, 1004);
|
||||
iniFile.Get(SectionName.c_str(), "r_trigger", &WiiMoteEmu::PadMapping[i].Axis.Tr, 1005);
|
||||
iniFile.Get(SectionName.c_str(), "DeadZone", &WiiMoteEmu::PadMapping[i].deadzone, 0);
|
||||
iniFile.Get(SectionName.c_str(), "DeadZoneL", &WiiMoteEmu::PadMapping[i].DeadZoneL, 0);
|
||||
iniFile.Get(SectionName.c_str(), "DeadZoneR", &WiiMoteEmu::PadMapping[i].DeadZoneR, 0);
|
||||
iniFile.Get(SectionName.c_str(), "TriggerType", &WiiMoteEmu::PadMapping[i].triggertype, 0);
|
||||
iniFile.Get(SectionName.c_str(), "Diagonal", &WiiMoteEmu::PadMapping[i].SDiagonal, "100%");
|
||||
iniFile.Get(SectionName.c_str(), "Circle2Square", &WiiMoteEmu::PadMapping[i].bCircle2Square, false);
|
||||
@ -162,7 +163,8 @@ void Config::Save(int Slot)
|
||||
iniFile.Set(SectionName.c_str(), "l_trigger", WiiMoteEmu::PadMapping[i].Axis.Tl);
|
||||
iniFile.Set(SectionName.c_str(), "r_trigger", WiiMoteEmu::PadMapping[i].Axis.Tr);
|
||||
|
||||
iniFile.Set(SectionName.c_str(), "DeadZone", WiiMoteEmu::PadMapping[i].deadzone);
|
||||
iniFile.Set(SectionName.c_str(), "DeadZoneL", WiiMoteEmu::PadMapping[i].DeadZoneL);
|
||||
iniFile.Set(SectionName.c_str(), "DeadZoneR", WiiMoteEmu::PadMapping[i].DeadZoneR);
|
||||
//iniFile.Set(SectionName.c_str(), "controllertype", WiiMoteEmu::PadMapping[i].controllertype);
|
||||
iniFile.Set(SectionName.c_str(), "TriggerType", WiiMoteEmu::PadMapping[i].triggertype);
|
||||
iniFile.Set(SectionName.c_str(), "Diagonal", WiiMoteEmu::PadMapping[i].SDiagonal);
|
||||
|
@ -40,7 +40,8 @@ struct Config
|
||||
{
|
||||
TRIGGER_OFF = 0,
|
||||
KEYBOARD,
|
||||
ANALOG,
|
||||
ANALOG1,
|
||||
ANALOG2,
|
||||
TRIGGER
|
||||
};
|
||||
|
||||
|
@ -106,7 +106,8 @@ BEGIN_EVENT_TABLE(ConfigDialog,wxDialog)
|
||||
EVT_COMBOBOX(ID_TILT_RANGE_ROLL, ConfigDialog::GeneralSettingsChanged)
|
||||
EVT_COMBOBOX(ID_TILT_RANGE_PITCH, ConfigDialog::GeneralSettingsChanged)
|
||||
EVT_COMBOBOX(IDCB_LEFT_DIAGONAL, ConfigDialog::GeneralSettingsChanged)
|
||||
EVT_COMBOBOX(IDCB_DEAD_ZONE, ConfigDialog::GeneralSettingsChanged)
|
||||
EVT_COMBOBOX(IDCB_DEAD_ZONE_LEFT, ConfigDialog::GeneralSettingsChanged)
|
||||
EVT_COMBOBOX(IDCB_DEAD_ZONE_RIGHT, ConfigDialog::GeneralSettingsChanged)
|
||||
EVT_CHECKBOX(IDC_LEFT_C2S, ConfigDialog::GeneralSettingsChanged)
|
||||
EVT_CHECKBOX(ID_TILT_INVERT_ROLL, ConfigDialog::GeneralSettingsChanged)
|
||||
EVT_CHECKBOX(ID_TILT_INVERT_PITCH, ConfigDialog::GeneralSettingsChanged)
|
||||
@ -162,7 +163,7 @@ ConfigDialog::ConfigDialog(wxWindow *parent, wxWindowID id, const wxString &titl
|
||||
// Set control values
|
||||
UpdateGUI();
|
||||
// Update dead zone
|
||||
DoChangeDeadZone();
|
||||
DoChangeDeadZone(true); DoChangeDeadZone(false);
|
||||
|
||||
wxTheApp->Connect(wxID_ANY, wxEVT_KEY_DOWN, // Keyboard
|
||||
wxKeyEventHandler(ConfigDialog::OnKeyDown),
|
||||
@ -423,7 +424,8 @@ void ConfigDialog::CreateGUIControls()
|
||||
wxArrayString StrTilt;
|
||||
StrTilt.Add(wxString::FromAscii("<Off>"));
|
||||
StrTilt.Add(wxString::FromAscii("Keyboard"));
|
||||
StrTilt.Add(wxString::FromAscii("Analog stick"));
|
||||
StrTilt.Add(wxString::FromAscii("Analog 1"));
|
||||
StrTilt.Add(wxString::FromAscii("Analog 2"));
|
||||
StrTilt.Add(wxString::FromAscii("Triggers"));
|
||||
// The range is in degrees and are set at even 5 degrees values
|
||||
wxArrayString StrTiltRangeRoll, StrTiltRangePitch;
|
||||
@ -446,7 +448,7 @@ void ConfigDialog::CreateGUIControls()
|
||||
// ----------------
|
||||
|
||||
// Configuration controls
|
||||
static const int TxtW = 50, TxtH = 19, ChW = 245;
|
||||
static const int TxtW = 50, TxtH = 19, ChW = 261;
|
||||
|
||||
// Basic Settings
|
||||
m_WiimoteOnline[i] = new wxCheckBox(m_Controller[i], IDC_WIMOTE_ON, wxT("Wiimote On"), wxDefaultPosition, wxSize(ChW, -1));
|
||||
@ -535,7 +537,7 @@ void ConfigDialog::CreateGUIControls()
|
||||
// -----------------------------
|
||||
/**/
|
||||
// Controller
|
||||
m_Joyname[i] = new wxComboBox(m_Controller[i], IDC_JOYNAME, StrJoyname[0], wxDefaultPosition, wxSize(185, -1), StrJoyname, wxCB_READONLY);
|
||||
m_Joyname[i] = new wxComboBox(m_Controller[i], IDC_JOYNAME, StrJoyname[0], wxDefaultPosition, wxSize(200, -1), StrJoyname, wxCB_READONLY);
|
||||
|
||||
// Circle to square
|
||||
m_CheckC2S[i] = new wxCheckBox(m_Controller[i], IDC_LEFT_C2S, wxT("Circle To Square"));
|
||||
@ -554,7 +556,8 @@ void ConfigDialog::CreateGUIControls()
|
||||
m_ComboDeadZoneLabel[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Dead Zone"));
|
||||
wxArrayString TextDeadZone;
|
||||
for (int i = 0; i <= 50; i++) TextDeadZone.Add(wxString::Format(wxT("%i%%"), i));
|
||||
m_ComboDeadZone[i] = new wxComboBox(m_Controller[i], IDCB_DEAD_ZONE, TextDeadZone[0], wxDefaultPosition, wxDefaultSize, TextDeadZone, wxCB_READONLY);
|
||||
m_ComboDeadZoneLeft[i] = new wxComboBox(m_Controller[i], IDCB_DEAD_ZONE_LEFT, TextDeadZone[0], wxDefaultPosition, wxDefaultSize, TextDeadZone, wxCB_READONLY);
|
||||
m_ComboDeadZoneRight[i] = new wxComboBox(m_Controller[i], IDCB_DEAD_ZONE_RIGHT, TextDeadZone[0], wxDefaultPosition, wxDefaultSize, TextDeadZone, wxCB_READONLY);
|
||||
|
||||
// Tooltips
|
||||
m_Joyname[i]->SetToolTip(wxT("Save your settings and configure another joypad"));
|
||||
@ -569,8 +572,11 @@ void ConfigDialog::CreateGUIControls()
|
||||
|
||||
// Sizers
|
||||
m_gDeadZone[i] = new wxBoxSizer(wxVERTICAL);
|
||||
m_gDeadZone[i]->Add(m_ComboDeadZoneLabel[i], 0, (wxUP), 0);
|
||||
m_gDeadZone[i]->Add(m_ComboDeadZone[i], 0, (wxUP), 2);
|
||||
m_gDeadZoneHoriz[i] = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_gDeadZoneHoriz[i]->Add(m_ComboDeadZoneLeft[i], 0, (wxUP), 0);
|
||||
m_gDeadZoneHoriz[i]->Add(m_ComboDeadZoneRight[i], 0, (wxUP), 0);
|
||||
m_gDeadZone[i]->Add(m_ComboDeadZoneLabel[i], 0, wxALIGN_CENTER | (wxUP), 0);
|
||||
m_gDeadZone[i]->Add(m_gDeadZoneHoriz[i], 0, wxALIGN_CENTER | (wxUP), 2);
|
||||
|
||||
m_gCircle2Square[i] = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_gCircle2Square[i]->Add(m_CheckC2SLabel[i], 0, (wxUP), 4);
|
||||
@ -585,8 +591,10 @@ void ConfigDialog::CreateGUIControls()
|
||||
m_gC2SDeadZone[i]->Add(m_gCircle2SquareVert[i], 0, (wxLEFT), 8);
|
||||
|
||||
m_gJoyname[i] = new wxStaticBoxSizer (wxVERTICAL, m_Controller[i], wxT("Gamepad"));
|
||||
m_gJoyname[i]->AddStretchSpacer();
|
||||
m_gJoyname[i]->Add(m_Joyname[i], 0, wxALIGN_CENTER | (wxLEFT | wxRIGHT | wxDOWN), 5);
|
||||
m_gJoyname[i]->Add(m_gC2SDeadZone[i], 0, wxALIGN_CENTER | (wxLEFT | wxRIGHT | wxDOWN), 5);
|
||||
m_gJoyname[i]->AddStretchSpacer();
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
@ -726,6 +734,7 @@ void ConfigDialog::CreateGUIControls()
|
||||
|
||||
m_pRightInStatus[i] = new wxPanel(m_Controller[i], wxID_ANY, wxDefaultPosition, wxDefaultSize);
|
||||
m_bmpSquareRightIn[i] = new wxStaticBitmap(m_pRightInStatus[i], wxID_ANY, CreateBitmap(), wxDefaultPosition, wxDefaultSize);
|
||||
m_bmpDeadZoneRightIn[i] = new wxStaticBitmap(m_pRightInStatus[i], wxID_ANY, CreateBitmapDeadZone(0), wxDefaultPosition, wxDefaultSize);
|
||||
m_bmpDotRightIn[i] = new wxStaticBitmap(m_pRightInStatus[i], wxID_ANY, CreateBitmapDot(), wxPoint(BoxW / 2, BoxH / 2), wxDefaultSize);
|
||||
|
||||
m_pRightOutStatus[i] = new wxPanel(m_Controller[i], wxID_ANY, wxDefaultPosition, wxDefaultSize);
|
||||
@ -805,8 +814,10 @@ void ConfigDialog::CreateGUIControls()
|
||||
// Row 3 Sizers
|
||||
// -----------------------------
|
||||
m_HorizControllers[i] = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_HorizControllers[i]->AddStretchSpacer();
|
||||
m_HorizControllers[i]->Add(m_gAnalogLeft[i]);
|
||||
m_HorizControllers[i]->Add(m_gAnalogRight[i], 0, (wxLEFT), 5);
|
||||
m_HorizControllers[i]->AddStretchSpacer();
|
||||
///////////////////////////
|
||||
|
||||
|
||||
@ -1180,9 +1191,13 @@ void ConfigDialog::GeneralSettingsChanged(wxCommandEvent& event)
|
||||
case ID_TILT_INVERT_PITCH:
|
||||
SaveButtonMappingAll(Page);
|
||||
break;
|
||||
case IDCB_DEAD_ZONE:
|
||||
case IDCB_DEAD_ZONE_LEFT:
|
||||
SaveButtonMappingAll(Page);
|
||||
DoChangeDeadZone();
|
||||
DoChangeDeadZone(true);
|
||||
break;
|
||||
case IDCB_DEAD_ZONE_RIGHT:
|
||||
SaveButtonMappingAll(Page);
|
||||
DoChangeDeadZone(false);
|
||||
break;
|
||||
|
||||
//////////////////////////
|
||||
@ -1269,7 +1284,8 @@ void ConfigDialog::UpdateGUI(int Slot)
|
||||
m_Notebook->FindItem(IDC_JOYNAME)->Enable(PadEnabled);
|
||||
m_Notebook->FindItem(IDC_LEFT_C2S)->Enable(PadEnabled);
|
||||
m_Notebook->FindItem(IDCB_LEFT_DIAGONAL)->Enable(PadEnabled);
|
||||
m_Notebook->FindItem(IDCB_DEAD_ZONE)->Enable(PadEnabled);
|
||||
m_Notebook->FindItem(IDCB_DEAD_ZONE_LEFT)->Enable(PadEnabled);
|
||||
m_Notebook->FindItem(IDCB_DEAD_ZONE_RIGHT)->Enable(PadEnabled);
|
||||
m_Notebook->FindItem(ID_TRIGGER_TYPE)->Enable(PadEnabled);
|
||||
#endif
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ class ConfigDialog : public wxDialog
|
||||
// Wiimote status
|
||||
wxGauge *m_GaugeBattery, *m_GaugeRoll[2], *m_GaugeGForce[3], *m_GaugeAccel[3];
|
||||
wxStaticBitmap *m_bmpDotLeftIn[4], *m_bmpDotLeftOut[4], *m_bmpDotRightIn[4], *m_bmpDotRightOut[4],
|
||||
*m_bmpDeadZoneLeftIn[4];
|
||||
*m_bmpDeadZoneLeftIn[4], *m_bmpDeadZoneRightIn[4];
|
||||
wxStaticText *m_TextIR, *m_TextAccNeutralCurrent;
|
||||
bool m_bWaitForRecording, m_bRecording, m_bAllowA;
|
||||
int m_iRecordTo;
|
||||
@ -87,7 +87,7 @@ class ConfigDialog : public wxDialog
|
||||
// Emulated Wiimote key settings
|
||||
wxBoxSizer *m_SizeBasicPadding[4], *m_SizeEmuPadding[4], *m_SizeRealPadding[4], *m_SizeExtensionsPadding[4],
|
||||
*m_SizeBasicGeneral[4], *m_SizeBasicGeneralLeft[4], *m_SizeBasicGeneralRight[4],
|
||||
*m_HorizControllers[4], *m_gC2SDeadZone[4], *m_gCircle2Square[4], *m_gCircle2SquareVert[4], *m_gDeadZone[4], *m_HorizControllerTiltParent[4], *m_HorizControllerTilt[4], *m_TiltHoriz[4],
|
||||
*m_HorizControllers[4], *m_gC2SDeadZone[4], *m_gCircle2Square[4], *m_gCircle2SquareVert[4], *m_gDeadZone[4], *m_gDeadZoneHoriz[4], *m_HorizControllerTiltParent[4], *m_HorizControllerTilt[4], *m_TiltHoriz[4],
|
||||
*m_SizeAnalogLeft[4], *m_SizeAnalogLeftHorizX[4], *m_SizeAnalogLeftHorizY[4], *m_SizeAnalogRight[4], *m_SizeAnalogRightHorizX[4], *m_SizeAnalogRightHorizY[4],
|
||||
*m_SizeAnalogTriggerVertLeft[4], *m_SizeAnalogTriggerVertRight[4], *m_SizeAnalogTriggerHorizInput[4];
|
||||
wxGridBagSizer *m_SizeAnalogTriggerHorizConfig[4], *m_SizeAnalogTriggerStatusBox[4], *m_TiltGrid[4],
|
||||
@ -106,7 +106,7 @@ class ConfigDialog : public wxDialog
|
||||
wxCheckBox *m_SidewaysDPad[4], *m_WiimoteOnline[4], *m_WideScreen[4];
|
||||
wxCheckBox *m_CheckC2S[4], *m_TiltInvertRoll[4], *m_TiltInvertPitch[4];
|
||||
wxCheckBox *m_WiiMotionPlusConnected[4], *m_NunchuckConnected[4], *m_ClassicControllerConnected[4], *m_BalanceBoardConnected[4], *m_GuitarHeroGuitarConnected[4], *m_GuitarHeroWorldTourDrumsConnected[4];
|
||||
wxComboBox *m_TiltComboInput[4], *m_TiltComboRangeRoll[4], *m_TiltComboRangePitch[4], *m_Joyname[4], *m_ComboDiagonal[4], *m_ComboDeadZone[4], *m_TriggerType[4];
|
||||
wxComboBox *m_TiltComboInput[4], *m_TiltComboRangeRoll[4], *m_TiltComboRangePitch[4], *m_Joyname[4], *m_ComboDiagonal[4], *m_ComboDeadZoneLeft[4], *m_ComboDeadZoneRight[4], *m_TriggerType[4];
|
||||
|
||||
// Real Wiimote settings
|
||||
wxCheckBox *m_ConnectRealWiimote[4], *m_UseRealWiimote[4], *m_UpdateMeters;
|
||||
@ -162,7 +162,7 @@ class ConfigDialog : public wxDialog
|
||||
ID_TRIGGER_L, ID_TRIGGER_R,
|
||||
|
||||
// Gamepad settings
|
||||
IDC_JOYNAME, IDC_LEFT_C2S, IDCB_LEFT_DIAGONAL, IDCB_DEAD_ZONE,
|
||||
IDC_JOYNAME, IDC_LEFT_C2S, IDCB_LEFT_DIAGONAL, IDCB_DEAD_ZONE_LEFT, IDCB_DEAD_ZONE_RIGHT,
|
||||
ID_TRIGGER_TYPE, ID_TILT_INPUT, ID_TILT_RANGE_ROLL, ID_TILT_RANGE_PITCH, ID_TILT_INVERT_ROLL, ID_TILT_INVERT_PITCH,
|
||||
|
||||
// Real
|
||||
@ -191,7 +191,7 @@ class ConfigDialog : public wxDialog
|
||||
void ToBlank(bool ToBlank = true);
|
||||
void PadGetStatus();
|
||||
void DoSave(bool ChangePad = false, int Slot = -1);
|
||||
void DoChangeJoystick(); void PadOpen(int Open); void PadClose(int Close); void DoChangeDeadZone();
|
||||
void DoChangeJoystick(); void PadOpen(int Open); void PadClose(int Close); void DoChangeDeadZone(bool Left);
|
||||
|
||||
// Configure buttons
|
||||
int GetButtonWaitingID, GetButtonWaitingTimer;
|
||||
|
@ -75,14 +75,26 @@ void ConfigDialog::PadClose(int Close) // Close for slot 1, 2, 3 or 4
|
||||
WiiMoteEmu::PadState[Close].joy = NULL;
|
||||
}
|
||||
|
||||
void ConfigDialog::DoChangeDeadZone()
|
||||
void ConfigDialog::DoChangeDeadZone(bool Left)
|
||||
{
|
||||
float Rad = (float)WiiMoteEmu::PadMapping[Page].deadzone * ((float)BoxW / 100.0) * 0.5;
|
||||
m_bmpDeadZoneLeftIn[Page]->SetBitmap(CreateBitmapClear());
|
||||
m_bmpDeadZoneLeftIn[Page]->SetSize(0, 0);
|
||||
m_bmpDeadZoneLeftIn[Page]->SetBitmap(CreateBitmapDeadZone((int)Rad));
|
||||
m_bmpDeadZoneLeftIn[Page]->SetPosition(wxPoint(BoxW / 2 - (int)Rad, BoxH / 2 - (int)Rad));
|
||||
m_bmpDeadZoneLeftIn[Page]->Refresh();
|
||||
if(Left)
|
||||
{
|
||||
float Rad = (float)WiiMoteEmu::PadMapping[Page].DeadZoneL * ((float)BoxW / 100.0) * 0.5;
|
||||
m_bmpDeadZoneLeftIn[Page]->SetBitmap(CreateBitmapClear());
|
||||
m_bmpDeadZoneLeftIn[Page]->SetSize(0, 0);
|
||||
m_bmpDeadZoneLeftIn[Page]->SetBitmap(CreateBitmapDeadZone((int)Rad));
|
||||
m_bmpDeadZoneLeftIn[Page]->SetPosition(wxPoint(BoxW / 2 - (int)Rad, BoxH / 2 - (int)Rad));
|
||||
m_bmpDeadZoneLeftIn[Page]->Refresh();
|
||||
}
|
||||
else
|
||||
{
|
||||
float Rad = (float)WiiMoteEmu::PadMapping[Page].DeadZoneR * ((float)BoxW / 100.0) * 0.5;
|
||||
m_bmpDeadZoneRightIn[Page]->SetBitmap(CreateBitmapClear());
|
||||
m_bmpDeadZoneRightIn[Page]->SetSize(0, 0);
|
||||
m_bmpDeadZoneRightIn[Page]->SetBitmap(CreateBitmapDeadZone((int)Rad));
|
||||
m_bmpDeadZoneRightIn[Page]->SetPosition(wxPoint(BoxW / 2 - (int)Rad, BoxH / 2 - (int)Rad));
|
||||
m_bmpDeadZoneRightIn[Page]->Refresh();
|
||||
}
|
||||
}
|
||||
//////////////////////////////////////
|
||||
|
||||
@ -138,7 +150,8 @@ void ConfigDialog::UpdateGUIButtonMapping(int controller)
|
||||
|
||||
// Update the deadzone and controller type controls
|
||||
m_TriggerType[controller]->SetSelection(WiiMoteEmu::PadMapping[controller].triggertype);
|
||||
m_ComboDeadZone[controller]->SetSelection(WiiMoteEmu::PadMapping[controller].deadzone);
|
||||
m_ComboDeadZoneLeft[controller]->SetSelection(WiiMoteEmu::PadMapping[controller].DeadZoneL);
|
||||
m_ComboDeadZoneRight[controller]->SetSelection(WiiMoteEmu::PadMapping[controller].DeadZoneR);
|
||||
m_ComboDiagonal[controller]->SetValue(wxString::FromAscii(WiiMoteEmu::PadMapping[controller].SDiagonal.c_str()));
|
||||
m_CheckC2S[controller]->SetValue(WiiMoteEmu::PadMapping[controller].bCircle2Square);
|
||||
m_TiltInvertRoll[controller]->SetValue(WiiMoteEmu::PadMapping[controller].bRollInvert);
|
||||
@ -169,7 +182,8 @@ void ConfigDialog::SaveButtonMapping(int controller, bool DontChangeId, int From
|
||||
// Set other settings
|
||||
//WiiMoteEmu::PadMapping[controller].controllertype = m_ControlType[FromSlot]->GetSelection();
|
||||
WiiMoteEmu::PadMapping[controller].triggertype = m_TriggerType[FromSlot]->GetSelection();
|
||||
WiiMoteEmu::PadMapping[controller].deadzone = m_ComboDeadZone[FromSlot]->GetSelection();
|
||||
WiiMoteEmu::PadMapping[controller].DeadZoneL = m_ComboDeadZoneLeft[FromSlot]->GetSelection();
|
||||
WiiMoteEmu::PadMapping[controller].DeadZoneR = m_ComboDeadZoneRight[FromSlot]->GetSelection();
|
||||
WiiMoteEmu::PadMapping[controller].SDiagonal = m_ComboDiagonal[FromSlot]->GetLabel().mb_str();
|
||||
WiiMoteEmu::PadMapping[controller].bCircle2Square = m_CheckC2S[FromSlot]->IsChecked();
|
||||
WiiMoteEmu::PadMapping[controller].bRollInvert = m_TiltInvertRoll[FromSlot]->IsChecked();
|
||||
@ -536,12 +550,18 @@ void ConfigDialog::PadGetStatus()
|
||||
//main_y = main_xy.at(1);
|
||||
}
|
||||
// Check dead zone
|
||||
float DeadZone = (float)WiiMoteEmu::PadMapping[Page].deadzone / 100.0;
|
||||
if (InputCommon::IsDeadZone(DeadZone, main_x_after, main_y_after))
|
||||
float DeadZoneLeft = (float)WiiMoteEmu::PadMapping[Page].DeadZoneL / 100.0;
|
||||
float DeadZoneRight = (float)WiiMoteEmu::PadMapping[Page].DeadZoneR / 100.0;
|
||||
if (InputCommon::IsDeadZone(DeadZoneLeft, main_x_after, main_y_after))
|
||||
{
|
||||
main_x_after = 0;
|
||||
main_y_after = 0;
|
||||
}
|
||||
if (InputCommon::IsDeadZone(DeadZoneRight, right_x_after, right_y_after))
|
||||
{
|
||||
right_x_after = 0;
|
||||
right_y_after = 0;
|
||||
}
|
||||
|
||||
// -------------------------------------------
|
||||
// Show the adjusted angles in the status box
|
||||
|
@ -385,12 +385,18 @@ void TiltWiimoteGamepad(float &Roll, float &Pitch)
|
||||
PadState[Page].Axis.Ly = main_xy.at(1);
|
||||
}
|
||||
// Check dead zone
|
||||
float DeadZone = (float)PadMapping[Page].deadzone / 100.0;
|
||||
if (InputCommon::IsDeadZone(DeadZone, PadState[Page].Axis.Lx, PadState[Page].Axis.Ly))
|
||||
float DeadZoneLeft = (float)PadMapping[Page].DeadZoneL / 100.0;
|
||||
float DeadZoneRight = (float)PadMapping[Page].DeadZoneR / 100.0;
|
||||
if (InputCommon::IsDeadZone(DeadZoneLeft, PadState[Page].Axis.Lx, PadState[Page].Axis.Ly))
|
||||
{
|
||||
PadState[Page].Axis.Lx = 0;
|
||||
PadState[Page].Axis.Ly = 0;
|
||||
}
|
||||
if (InputCommon::IsDeadZone(DeadZoneRight, PadState[Page].Axis.Rx, PadState[Page].Axis.Ry))
|
||||
{
|
||||
PadState[Page].Axis.Rx = 0;
|
||||
PadState[Page].Axis.Ry = 0;
|
||||
}
|
||||
|
||||
// Convert the big values
|
||||
float Lx = (float)InputCommon::Pad_Convert(PadState[Page].Axis.Lx);
|
||||
@ -429,7 +435,7 @@ void TiltWiimoteGamepad(float &Roll, float &Pitch)
|
||||
|
||||
/* For the analog stick roll us by default set to the X-axis, pitch is by default set to the Y-axis.
|
||||
By changing the axis mapping and the invert options this can be altered in any way */
|
||||
else
|
||||
else if (g_Config.Trigger.Type == g_Config.ANALOG1)
|
||||
{
|
||||
// Adjust the trigger to go between negative and positive values
|
||||
Lx = Lx - 128;
|
||||
@ -441,6 +447,19 @@ void TiltWiimoteGamepad(float &Roll, float &Pitch)
|
||||
Roll = Lx * (RollRange / 128);
|
||||
Pitch = Ly * (PitchRange / 128);
|
||||
}
|
||||
// Otherwise we are using ANALOG2
|
||||
else
|
||||
{
|
||||
// Adjust the trigger to go between negative and positive values
|
||||
Rx = Rx - 128;
|
||||
Ry = Ry - 128;
|
||||
// Invert
|
||||
if (PadMapping[Page].bRollInvert) Rx = -Rx; // else Tr = -Tr;
|
||||
if (PadMapping[Page].bPitchInvert) Ry = -Ry; // else Tr = -Tr;
|
||||
// Produce the final value
|
||||
Roll = Rx * (RollRange / 128);
|
||||
Pitch = Ry * (PitchRange / 128);
|
||||
}
|
||||
|
||||
// Adjustment to prevent a slightly to high angle
|
||||
if (Pitch >= PitchRange) Pitch = PitchRange - 0.1;
|
||||
@ -511,7 +530,7 @@ void Tilt(u8 &_x, u8 &_y, u8 &_z)
|
||||
// Select input method and return the x, y, x values
|
||||
if (g_Config.Trigger.Type == g_Config.KEYBOARD)
|
||||
TiltWiimoteKeyboard(Roll, Pitch);
|
||||
else if (g_Config.Trigger.Type == g_Config.TRIGGER || g_Config.Trigger.Type == g_Config.ANALOG)
|
||||
else if (g_Config.Trigger.Type == g_Config.TRIGGER || g_Config.Trigger.Type == g_Config.ANALOG1 || g_Config.Trigger.Type == g_Config.ANALOG2)
|
||||
TiltWiimoteGamepad(Roll, Pitch);
|
||||
|
||||
// Adjust angles, it's only needed if both roll and pitch is used together
|
||||
|
Reference in New Issue
Block a user