Added camera joystick bindings (#653)
parent
942f746a21
commit
ebc2e6e26c
|
@ -170,10 +170,31 @@ void CInput::EventProcess(Event& event)
|
|||
if (GetJoyAxisBinding(JOY_AXIS_SLOT_Z).invert)
|
||||
m_joyMotion.z *= -1.0f;
|
||||
}
|
||||
|
||||
if (data->axis == GetJoyAxisBinding(JOY_AXIS_SLOT_CAM_X).axis)
|
||||
{
|
||||
m_joyMotionCam.x = -Math::Neutral(data->value / 32768.0f, m_joystickDeadzone);
|
||||
if (GetJoyAxisBinding(JOY_AXIS_SLOT_CAM_X).invert)
|
||||
m_joyMotionCam.x *= -1.0f;
|
||||
}
|
||||
|
||||
if (data->axis == GetJoyAxisBinding(JOY_AXIS_SLOT_CAM_Y).axis)
|
||||
{
|
||||
m_joyMotionCam.y = -Math::Neutral(data->value / 32768.0f, m_joystickDeadzone);
|
||||
if (GetJoyAxisBinding(JOY_AXIS_SLOT_CAM_Y).invert)
|
||||
m_joyMotionCam.y *= -1.0f;
|
||||
}
|
||||
|
||||
if (data->axis == GetJoyAxisBinding(JOY_AXIS_SLOT_CAM_Z).axis)
|
||||
{
|
||||
m_joyMotionCam.z = -Math::Neutral(data->value / 32768.0f, m_joystickDeadzone);
|
||||
if (GetJoyAxisBinding(JOY_AXIS_SLOT_CAM_Z).invert)
|
||||
m_joyMotionCam.z *= -1.0f;
|
||||
}
|
||||
}
|
||||
|
||||
event.motionInput = Math::Clamp(m_joyMotion + m_keyMotion, Math::Vector(-1.0f, -1.0f, -1.0f), Math::Vector(1.0f, 1.0f, 1.0f));
|
||||
event.cameraInput = m_cameraKeyMotion;
|
||||
event.cameraInput = Math::Clamp(m_joyMotionCam + m_cameraKeyMotion, Math::Vector(-1.0f, -1.0f, -1.0f), Math::Vector(1.0f, 1.0f, 1.0f));
|
||||
}
|
||||
|
||||
void CInput::MouseMove(Math::IntPoint pos)
|
||||
|
@ -197,6 +218,7 @@ void CInput::ResetKeyStates()
|
|||
m_keyMotion = Math::Vector(0.0f, 0.0f, 0.0f);
|
||||
m_joyMotion = Math::Vector(0.0f, 0.0f, 0.0f);
|
||||
m_cameraKeyMotion = Math::Vector(0.0f, 0.0f, 0.0f);
|
||||
m_joyMotionCam = Math::Vector(0.0f, 0.0f, 0.0f);
|
||||
for(int i=0; i<INPUT_SLOT_MAX; i++)
|
||||
m_keyPresses[i] = false;
|
||||
}
|
||||
|
@ -255,6 +277,9 @@ void CInput::SetDefaultInputBindings()
|
|||
m_joyAxisBindings[JOY_AXIS_SLOT_X].axis = 0;
|
||||
m_joyAxisBindings[JOY_AXIS_SLOT_Y].axis = 1;
|
||||
m_joyAxisBindings[JOY_AXIS_SLOT_Z].axis = 2;
|
||||
m_joyAxisBindings[JOY_AXIS_SLOT_CAM_X].axis = -1;
|
||||
m_joyAxisBindings[JOY_AXIS_SLOT_CAM_Y].axis = -1;
|
||||
m_joyAxisBindings[JOY_AXIS_SLOT_CAM_Z].axis = -1;
|
||||
}
|
||||
|
||||
void CInput::SetInputBinding(InputSlot slot, InputBinding binding)
|
||||
|
|
|
@ -148,6 +148,8 @@ private:
|
|||
Math::Vector m_keyMotion;
|
||||
//! Motion vector set by joystick axes
|
||||
Math::Vector m_joyMotion;
|
||||
//! Camera motion vector set by joystick axes
|
||||
Math::Vector m_joyMotionCam;
|
||||
|
||||
//! Camera controls on the numpad
|
||||
Math::Vector m_cameraKeyMotion;
|
||||
|
|
|
@ -251,13 +251,19 @@ void InitializeEventTypeTexts()
|
|||
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK]= "EVENT_INTERFACE_JOYSTICK";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_SOLUCE] = "EVENT_INTERFACE_SOLUCE";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_DEADZONE]= "EVENT_INTERFACE_JOYSTICK_DEADZONE";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_X]= "EVENT_INTERFACE_JOYSTICK_X";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_Y]= "EVENT_INTERFACE_JOYSTICK_Y";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_Z]= "EVENT_INTERFACE_JOYSTICK_Z";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_X]= "EVENT_INTERFACE_JOYSTICK_CAM_X";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_Y]= "EVENT_INTERFACE_JOYSTICK_CAM_Y";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_Z]= "EVENT_INTERFACE_JOYSTICK_CAM_Z";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_X_INVERT]= "EVENT_INTERFACE_JOYSTICK_X_INVERT";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_Y_INVERT]= "EVENT_INTERFACE_JOYSTICK_Y_INVERT";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_Z_INVERT]= "EVENT_INTERFACE_JOYSTICK_Z_INVERT";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_DEADZONE]= "EVENT_INTERFACE_JOYSTICK_DEADZONE";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT]= "EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT]= "EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT]= "EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT";
|
||||
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_GLINTl] = "EVENT_INTERFACE_GLINTl";
|
||||
EVENT_TYPE_TEXT[EVENT_INTERFACE_GLINTr] = "EVENT_INTERFACE_GLINTr";
|
||||
|
|
|
@ -284,24 +284,30 @@ enum EventType
|
|||
|
||||
EVENT_INTERFACE_JOYSTICK= 560,
|
||||
EVENT_INTERFACE_SOLUCE = 561,
|
||||
EVENT_INTERFACE_JOYSTICK_X = 562,
|
||||
EVENT_INTERFACE_JOYSTICK_Y = 563,
|
||||
EVENT_INTERFACE_JOYSTICK_Z = 564,
|
||||
EVENT_INTERFACE_JOYSTICK_X_INVERT = 565,
|
||||
EVENT_INTERFACE_JOYSTICK_Y_INVERT = 566,
|
||||
EVENT_INTERFACE_JOYSTICK_Z_INVERT = 567,
|
||||
EVENT_INTERFACE_JOYSTICK_DEADZONE = 568,
|
||||
EVENT_INTERFACE_JOYSTICK_DEADZONE = 562,
|
||||
EVENT_INTERFACE_JOYSTICK_X = 563,
|
||||
EVENT_INTERFACE_JOYSTICK_Y = 564,
|
||||
EVENT_INTERFACE_JOYSTICK_Z = 565,
|
||||
EVENT_INTERFACE_JOYSTICK_CAM_X = 566,
|
||||
EVENT_INTERFACE_JOYSTICK_CAM_Y = 567,
|
||||
EVENT_INTERFACE_JOYSTICK_CAM_Z = 568,
|
||||
EVENT_INTERFACE_JOYSTICK_X_INVERT = 569,
|
||||
EVENT_INTERFACE_JOYSTICK_Y_INVERT = 570,
|
||||
EVENT_INTERFACE_JOYSTICK_Z_INVERT = 571,
|
||||
EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT = 572,
|
||||
EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT = 573,
|
||||
EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT = 574,
|
||||
|
||||
EVENT_INTERFACE_GLINTl = 570,
|
||||
EVENT_INTERFACE_GLINTr = 571,
|
||||
EVENT_INTERFACE_GLINTu = 572,
|
||||
EVENT_INTERFACE_GLINTb = 573,
|
||||
EVENT_INTERFACE_GLINTl = 590,
|
||||
EVENT_INTERFACE_GLINTr = 591,
|
||||
EVENT_INTERFACE_GLINTu = 592,
|
||||
EVENT_INTERFACE_GLINTb = 593,
|
||||
|
||||
EVENT_INTERFACE_NEDIT = 580,
|
||||
EVENT_INTERFACE_NLIST = 581,
|
||||
EVENT_INTERFACE_NOK = 582,
|
||||
EVENT_INTERFACE_NDELETE = 584,
|
||||
EVENT_INTERFACE_NLABEL = 585,
|
||||
EVENT_INTERFACE_NEDIT = 595,
|
||||
EVENT_INTERFACE_NLIST = 596,
|
||||
EVENT_INTERFACE_NOK = 597,
|
||||
EVENT_INTERFACE_NDELETE = 598,
|
||||
EVENT_INTERFACE_NLABEL = 599,
|
||||
|
||||
EVENT_INTERFACE_IOWRITE = 600,
|
||||
EVENT_INTERFACE_IOREAD = 601,
|
||||
|
|
|
@ -117,6 +117,9 @@ enum JoyAxisSlot
|
|||
JOY_AXIS_SLOT_X,
|
||||
JOY_AXIS_SLOT_Y,
|
||||
JOY_AXIS_SLOT_Z,
|
||||
JOY_AXIS_SLOT_CAM_X,
|
||||
JOY_AXIS_SLOT_CAM_Y,
|
||||
JOY_AXIS_SLOT_CAM_Z,
|
||||
|
||||
JOY_AXIS_SLOT_MAX
|
||||
};
|
||||
|
|
|
@ -252,6 +252,9 @@ void InitializeRestext()
|
|||
stringsEvent[EVENT_INTERFACE_JOYSTICK_X_INVERT] = TR("Invert\\Invert values on this axis");
|
||||
stringsEvent[EVENT_INTERFACE_JOYSTICK_Y_INVERT] = TR("Invert\\Invert values on this axis");
|
||||
stringsEvent[EVENT_INTERFACE_JOYSTICK_Z_INVERT] = TR("Invert\\Invert values on this axis");
|
||||
stringsEvent[EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT] = TR("Invert\\Invert values on this axis");
|
||||
stringsEvent[EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT] = TR("Invert\\Invert values on this axis");
|
||||
stringsEvent[EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT] = TR("Invert\\Invert values on this axis");
|
||||
|
||||
stringsEvent[EVENT_INTERFACE_NEDIT] = TR("\\New player name");
|
||||
stringsEvent[EVENT_INTERFACE_NOK] = TR("OK\\Choose the selected player");
|
||||
|
|
|
@ -1601,11 +1601,13 @@ Math::Vector CCamera::CalculateCameraMovement(const Event &event, bool keysAllow
|
|||
{
|
||||
delta.x += event.cameraInput.x * event.rTime * 0.5f * m_speed;
|
||||
delta.y -= event.cameraInput.y * event.rTime * 0.5f * m_speed;
|
||||
delta.z -= event.cameraInput.z * event.rTime * 20.0f * m_speed;
|
||||
|
||||
if (m_cameraObj == nullptr)
|
||||
{
|
||||
delta.x += event.motionInput.x * event.rTime * 0.5f * m_speed;
|
||||
delta.y -= event.motionInput.y * event.rTime * 0.5f * m_speed;
|
||||
delta.z -= event.motionInput.z * event.rTime * 20.0f * m_speed;
|
||||
}
|
||||
|
||||
if (m_input->GetKeyState(INPUT_SLOT_NEAR))
|
||||
|
|
|
@ -103,63 +103,40 @@ void CScreenSetupControls::CreateInterface()
|
|||
ddim.x = 160.0f/640.0f;
|
||||
ddim.y = 80.0f/480.0f;
|
||||
pos.x = 400.0f/640.0f;
|
||||
pos.y = 213.0f/480.0f;
|
||||
pos.y = 273.0f/480.0f;
|
||||
pli = pw->CreateList(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK);
|
||||
pli->SetState(STATE_SHADOW);
|
||||
|
||||
ddim.x = dim.x*1.5f;
|
||||
ddim.y = 18.0f/480.0f;
|
||||
pos.y = 180.0f/480.0f;
|
||||
pos.y = 240.0f/480.0f;
|
||||
|
||||
pos.y -= 5.0f/480.0f;
|
||||
pos.x = 390.0f/640.0f;
|
||||
pw->CreateLabel(pos, ddim, 0, EVENT_LABEL0, "X:");
|
||||
pos.y += 5.0f/480.0f;
|
||||
pos.x = 422.0f/640.0f;
|
||||
pev = pw->CreateEditValue(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK_X);
|
||||
pev->SetState(STATE_SHADOW);
|
||||
pev->SetType(EVT_INT);
|
||||
pev->SetMinValue(0);
|
||||
pev->SetMaxValue(2);
|
||||
pev->SetStepValue(1);
|
||||
pev->SetValue(0);
|
||||
pos.x = 480.0f/640.0f;
|
||||
pc = pw->CreateCheck(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK_X_INVERT);
|
||||
pc->SetState(STATE_SHADOW);
|
||||
|
||||
pos.y -= 20.0f/480.0f;
|
||||
pos.x = 390.0f/640.0f;
|
||||
pos.y -= 5.0f/480.0f;
|
||||
pw->CreateLabel(pos, ddim, 0, EVENT_LABEL1, "Y:");
|
||||
pos.y += 5.0f/480.0f;
|
||||
pos.x = 422.0f/640.0f;
|
||||
pev = pw->CreateEditValue(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK_Y);
|
||||
pev->SetState(STATE_SHADOW);
|
||||
pev->SetType(EVT_INT);
|
||||
pev->SetMinValue(0);
|
||||
pev->SetMaxValue(2);
|
||||
pev->SetStepValue(1);
|
||||
pev->SetValue(1);
|
||||
pos.x = 480.0f/640.0f;
|
||||
pc = pw->CreateCheck(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK_Y_INVERT);
|
||||
pc->SetState(STATE_SHADOW);
|
||||
|
||||
pos.y -= 20.0f/480.0f;
|
||||
pos.x = 390.0f/640.0f;
|
||||
pos.y -= 5.0f/480.0f;
|
||||
pw->CreateLabel(pos, ddim, 0, EVENT_LABEL2, "Z:");
|
||||
pos.y += 5.0f/480.0f;
|
||||
pos.x = 422.0f/640.0f;
|
||||
pev = pw->CreateEditValue(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK_Z);
|
||||
pev->SetState(STATE_SHADOW);
|
||||
pev->SetType(EVT_INT);
|
||||
pev->SetMinValue(0);
|
||||
pev->SetMaxValue(2);
|
||||
pev->SetStepValue(1);
|
||||
pev->SetValue(2);
|
||||
pos.x = 480.0f/640.0f;
|
||||
pc = pw->CreateCheck(pos, ddim, 0, EVENT_INTERFACE_JOYSTICK_Z_INVERT);
|
||||
pc->SetState(STATE_SHADOW);
|
||||
auto CreateJoystickControls = [&](const std::string& label, EventType bindingControl, EventType invertControl)
|
||||
{
|
||||
pos.y -= 20.0f/480.0f;
|
||||
pos.x = 390.0f/640.0f;
|
||||
pos.y -= 5.0f/480.0f;
|
||||
pw->CreateLabel(pos, ddim, 0, EVENT_LABEL0, label);
|
||||
pos.y += 5.0f/480.0f;
|
||||
pos.x = 442.0f/640.0f;
|
||||
pev = pw->CreateEditValue(pos, ddim, 0, bindingControl);
|
||||
pev->SetState(STATE_SHADOW);
|
||||
pev->SetType(EVT_INT);
|
||||
pev->SetMinValue(-1);
|
||||
pev->SetMaxValue(2);
|
||||
pev->SetStepValue(1);
|
||||
pev->SetValue(1);
|
||||
pos.x = 500.0f/640.0f;
|
||||
pc = pw->CreateCheck(pos, ddim, 0, invertControl);
|
||||
pc->SetState(STATE_SHADOW);
|
||||
};
|
||||
pos.y += 15.0f/480.0f;
|
||||
CreateJoystickControls("X:", EVENT_INTERFACE_JOYSTICK_X, EVENT_INTERFACE_JOYSTICK_X_INVERT);
|
||||
CreateJoystickControls("Y:", EVENT_INTERFACE_JOYSTICK_Y, EVENT_INTERFACE_JOYSTICK_Y_INVERT);
|
||||
CreateJoystickControls("Z:", EVENT_INTERFACE_JOYSTICK_Z, EVENT_INTERFACE_JOYSTICK_Z_INVERT);
|
||||
CreateJoystickControls("CamX:", EVENT_INTERFACE_JOYSTICK_CAM_X, EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT);
|
||||
CreateJoystickControls("CamY:", EVENT_INTERFACE_JOYSTICK_CAM_Y, EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT);
|
||||
CreateJoystickControls("CamZ:", EVENT_INTERFACE_JOYSTICK_CAM_Z, EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT);
|
||||
|
||||
pos.y -= 25.0f/480.0f;
|
||||
pos.x = 420.0f/640.0f;
|
||||
|
@ -203,6 +180,9 @@ bool CScreenSetupControls::EventProcess(const Event &event)
|
|||
case EVENT_INTERFACE_JOYSTICK_X_INVERT:
|
||||
case EVENT_INTERFACE_JOYSTICK_Y_INVERT:
|
||||
case EVENT_INTERFACE_JOYSTICK_Z_INVERT:
|
||||
case EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT:
|
||||
case EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT:
|
||||
case EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT:
|
||||
ToggleJoystickInvert(event.type);
|
||||
ChangeSetupButtons();
|
||||
UpdateSetupButtons();
|
||||
|
@ -212,6 +192,9 @@ bool CScreenSetupControls::EventProcess(const Event &event)
|
|||
case EVENT_INTERFACE_JOYSTICK_X:
|
||||
case EVENT_INTERFACE_JOYSTICK_Y:
|
||||
case EVENT_INTERFACE_JOYSTICK_Z:
|
||||
case EVENT_INTERFACE_JOYSTICK_CAM_X:
|
||||
case EVENT_INTERFACE_JOYSTICK_CAM_Y:
|
||||
case EVENT_INTERFACE_JOYSTICK_CAM_Z:
|
||||
case EVENT_INTERFACE_JOYSTICK_DEADZONE:
|
||||
ChangeSetupButtons();
|
||||
UpdateSetupButtons();
|
||||
|
@ -254,42 +237,28 @@ void CScreenSetupControls::ChangeSetupButtons()
|
|||
}
|
||||
}
|
||||
|
||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_X))))
|
||||
auto HandleJoystickControls = [&](JoyAxisSlot joyAxis, EventType bindingControl, EventType invertControl)
|
||||
{
|
||||
JoyAxisBinding binding = m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_X);
|
||||
binding.axis = static_cast<int>(round(pev->GetValue()));
|
||||
m_input->SetJoyAxisBinding(JOY_AXIS_SLOT_X, binding);
|
||||
}
|
||||
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_X_INVERT))))
|
||||
{
|
||||
JoyAxisBinding binding = m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_X);
|
||||
binding.invert = pc->TestState(STATE_CHECK);
|
||||
m_input->SetJoyAxisBinding(JOY_AXIS_SLOT_X, binding);
|
||||
}
|
||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Y))))
|
||||
{
|
||||
JoyAxisBinding binding = m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Y);
|
||||
binding.axis = static_cast<int>(round(pev->GetValue()));
|
||||
m_input->SetJoyAxisBinding(JOY_AXIS_SLOT_Y, binding);
|
||||
}
|
||||
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Y_INVERT))))
|
||||
{
|
||||
JoyAxisBinding binding = m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Y);
|
||||
binding.invert = pc->TestState(STATE_CHECK);
|
||||
m_input->SetJoyAxisBinding(JOY_AXIS_SLOT_Y, binding);
|
||||
}
|
||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Z))))
|
||||
{
|
||||
JoyAxisBinding binding = m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Z);
|
||||
binding.axis = static_cast<int>(round(pev->GetValue()));
|
||||
m_input->SetJoyAxisBinding(JOY_AXIS_SLOT_Z, binding);
|
||||
}
|
||||
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Z_INVERT))))
|
||||
{
|
||||
JoyAxisBinding binding = m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Z);
|
||||
binding.invert = pc->TestState(STATE_CHECK);
|
||||
m_input->SetJoyAxisBinding(JOY_AXIS_SLOT_Z, binding);
|
||||
}
|
||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(bindingControl))))
|
||||
{
|
||||
JoyAxisBinding binding = m_input->GetJoyAxisBinding(joyAxis);
|
||||
binding.axis = static_cast<int>(round(pev->GetValue()));
|
||||
m_input->SetJoyAxisBinding(joyAxis, binding);
|
||||
}
|
||||
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(invertControl))))
|
||||
{
|
||||
JoyAxisBinding binding = m_input->GetJoyAxisBinding(joyAxis);
|
||||
binding.invert = pc->TestState(STATE_CHECK);
|
||||
m_input->SetJoyAxisBinding(joyAxis, binding);
|
||||
}
|
||||
};
|
||||
HandleJoystickControls(JOY_AXIS_SLOT_X, EVENT_INTERFACE_JOYSTICK_X, EVENT_INTERFACE_JOYSTICK_X_INVERT);
|
||||
HandleJoystickControls(JOY_AXIS_SLOT_Y, EVENT_INTERFACE_JOYSTICK_Y, EVENT_INTERFACE_JOYSTICK_Y_INVERT);
|
||||
HandleJoystickControls(JOY_AXIS_SLOT_Z, EVENT_INTERFACE_JOYSTICK_Z, EVENT_INTERFACE_JOYSTICK_Z_INVERT);
|
||||
HandleJoystickControls(JOY_AXIS_SLOT_CAM_X, EVENT_INTERFACE_JOYSTICK_CAM_X, EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT);
|
||||
HandleJoystickControls(JOY_AXIS_SLOT_CAM_Y, EVENT_INTERFACE_JOYSTICK_CAM_Y, EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT);
|
||||
HandleJoystickControls(JOY_AXIS_SLOT_CAM_Z, EVENT_INTERFACE_JOYSTICK_CAM_Z, EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT);
|
||||
|
||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_DEADZONE))))
|
||||
{
|
||||
m_input->SetJoystickDeadzone(pev->GetValue());
|
||||
|
@ -332,39 +301,27 @@ void CScreenSetupControls::UpdateSetupButtons()
|
|||
pli->SetSelect(m_app->GetJoystickEnabled() ? m_app->GetJoystick().index + 1 : 0);
|
||||
}
|
||||
|
||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_X))))
|
||||
auto HandleJoystickControls = [&](JoyAxisSlot joyAxis, EventType bindingControl, EventType invertControl)
|
||||
{
|
||||
pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||
pev->SetMaxValue(m_app->GetJoystick().axisCount-1);
|
||||
pev->SetValue(m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_X).axis);
|
||||
}
|
||||
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_X_INVERT))))
|
||||
{
|
||||
pc->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||
pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_X).invert);
|
||||
}
|
||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Y))))
|
||||
{
|
||||
pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||
pev->SetMaxValue(m_app->GetJoystick().axisCount-1);
|
||||
pev->SetValue(m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Y).axis);
|
||||
}
|
||||
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Y_INVERT))))
|
||||
{
|
||||
pc->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||
pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Y).invert);
|
||||
}
|
||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Z))))
|
||||
{
|
||||
pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||
pev->SetMaxValue(m_app->GetJoystick().axisCount-1);
|
||||
pev->SetValue(m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Z).axis);
|
||||
}
|
||||
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_Z_INVERT))))
|
||||
{
|
||||
pc->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||
pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(JOY_AXIS_SLOT_Z).invert);
|
||||
}
|
||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(bindingControl))))
|
||||
{
|
||||
pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||
pev->SetMaxValue(m_app->GetJoystick().axisCount-1);
|
||||
pev->SetValue(m_input->GetJoyAxisBinding(joyAxis).axis);
|
||||
}
|
||||
if (nullptr != (pc = static_cast<CCheck*>(pw->SearchControl(invertControl))))
|
||||
{
|
||||
pc->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||
pc->SetState(STATE_CHECK, m_input->GetJoyAxisBinding(joyAxis).invert);
|
||||
}
|
||||
};
|
||||
HandleJoystickControls(JOY_AXIS_SLOT_X, EVENT_INTERFACE_JOYSTICK_X, EVENT_INTERFACE_JOYSTICK_X_INVERT);
|
||||
HandleJoystickControls(JOY_AXIS_SLOT_Y, EVENT_INTERFACE_JOYSTICK_Y, EVENT_INTERFACE_JOYSTICK_Y_INVERT);
|
||||
HandleJoystickControls(JOY_AXIS_SLOT_Z, EVENT_INTERFACE_JOYSTICK_Z, EVENT_INTERFACE_JOYSTICK_Z_INVERT);
|
||||
HandleJoystickControls(JOY_AXIS_SLOT_CAM_X, EVENT_INTERFACE_JOYSTICK_CAM_X, EVENT_INTERFACE_JOYSTICK_CAM_X_INVERT);
|
||||
HandleJoystickControls(JOY_AXIS_SLOT_CAM_Y, EVENT_INTERFACE_JOYSTICK_CAM_Y, EVENT_INTERFACE_JOYSTICK_CAM_Y_INVERT);
|
||||
HandleJoystickControls(JOY_AXIS_SLOT_CAM_Z, EVENT_INTERFACE_JOYSTICK_CAM_Z, EVENT_INTERFACE_JOYSTICK_CAM_Z_INVERT);
|
||||
|
||||
if (nullptr != (pev = static_cast<CEditValue*>(pw->SearchControl(EVENT_INTERFACE_JOYSTICK_DEADZONE))))
|
||||
{
|
||||
pev->SetState(STATE_ENABLE, m_app->GetJoystickEnabled());
|
||||
|
|
Loading…
Reference in New Issue