Added camera joystick bindings (#653)

master
krzys-h 2016-05-28 13:50:41 +02:00
parent 942f746a21
commit ebc2e6e26c
8 changed files with 140 additions and 136 deletions

View File

@ -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)

View File

@ -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;

View File

@ -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";

View File

@ -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,

View File

@ -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
};

View File

@ -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");

View File

@ -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))

View File

@ -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());