|
|
@ -180,6 +180,10 @@ void PlayerControlPreview::ControllerUpdate(Core::HID::ControllerTriggerType typ
|
|
|
|
battery_values = controller->GetBatteryValues();
|
|
|
|
battery_values = controller->GetBatteryValues();
|
|
|
|
needs_redraw = true;
|
|
|
|
needs_redraw = true;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case Core::HID::ControllerTriggerType::Motion:
|
|
|
|
|
|
|
|
motion_values = controller->GetMotions();
|
|
|
|
|
|
|
|
needs_redraw = true;
|
|
|
|
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -313,6 +317,15 @@ void PlayerControlPreview::DrawLeftController(QPainter& p, const QPointF center)
|
|
|
|
DrawRawJoystick(p, center + QPointF(-140, 90), QPointF(0, 0));
|
|
|
|
DrawRawJoystick(p, center + QPointF(-140, 90), QPointF(0, 0));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Draw motion cubes
|
|
|
|
|
|
|
|
using namespace Settings::NativeMotion;
|
|
|
|
|
|
|
|
p.setPen(colors.outline);
|
|
|
|
|
|
|
|
p.setBrush(colors.transparent);
|
|
|
|
|
|
|
|
Draw3dCube(p, center + QPointF(-140, 90),
|
|
|
|
|
|
|
|
motion_values[Settings::NativeMotion::MotionLeft].euler, 20.0f);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
using namespace Settings::NativeButton;
|
|
|
|
using namespace Settings::NativeButton;
|
|
|
|
|
|
|
|
|
|
|
|
// D-pad constants
|
|
|
|
// D-pad constants
|
|
|
@ -435,6 +448,15 @@ void PlayerControlPreview::DrawRightController(QPainter& p, const QPointF center
|
|
|
|
DrawRawJoystick(p, QPointF(0, 0), center + QPointF(140, 90));
|
|
|
|
DrawRawJoystick(p, QPointF(0, 0), center + QPointF(140, 90));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Draw motion cubes
|
|
|
|
|
|
|
|
using namespace Settings::NativeMotion;
|
|
|
|
|
|
|
|
p.setPen(colors.outline);
|
|
|
|
|
|
|
|
p.setBrush(colors.transparent);
|
|
|
|
|
|
|
|
Draw3dCube(p, center + QPointF(140, 90),
|
|
|
|
|
|
|
|
motion_values[Settings::NativeMotion::MotionRight].euler, 20.0f);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
using namespace Settings::NativeButton;
|
|
|
|
using namespace Settings::NativeButton;
|
|
|
|
|
|
|
|
|
|
|
|
// Face buttons constants
|
|
|
|
// Face buttons constants
|
|
|
@ -555,6 +577,17 @@ void PlayerControlPreview::DrawDualController(QPainter& p, const QPointF center)
|
|
|
|
DrawRawJoystick(p, center + QPointF(-180, 90), center + QPointF(180, 90));
|
|
|
|
DrawRawJoystick(p, center + QPointF(-180, 90), center + QPointF(180, 90));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Draw motion cubes
|
|
|
|
|
|
|
|
using namespace Settings::NativeMotion;
|
|
|
|
|
|
|
|
p.setPen(colors.outline);
|
|
|
|
|
|
|
|
p.setBrush(colors.transparent);
|
|
|
|
|
|
|
|
Draw3dCube(p, center + QPointF(-180, -5),
|
|
|
|
|
|
|
|
motion_values[Settings::NativeMotion::MotionLeft].euler, 20.0f);
|
|
|
|
|
|
|
|
Draw3dCube(p, center + QPointF(180, -5),
|
|
|
|
|
|
|
|
motion_values[Settings::NativeMotion::MotionRight].euler, 20.0f);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
using namespace Settings::NativeButton;
|
|
|
|
using namespace Settings::NativeButton;
|
|
|
|
|
|
|
|
|
|
|
|
// Face buttons constants
|
|
|
|
// Face buttons constants
|
|
|
@ -647,6 +680,15 @@ void PlayerControlPreview::DrawHandheldController(QPainter& p, const QPointF cen
|
|
|
|
DrawRawJoystick(p, center + QPointF(-50, 0), center + QPointF(50, 0));
|
|
|
|
DrawRawJoystick(p, center + QPointF(-50, 0), center + QPointF(50, 0));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Draw motion cubes
|
|
|
|
|
|
|
|
using namespace Settings::NativeMotion;
|
|
|
|
|
|
|
|
p.setPen(colors.outline);
|
|
|
|
|
|
|
|
p.setBrush(colors.transparent);
|
|
|
|
|
|
|
|
Draw3dCube(p, center + QPointF(0, -115),
|
|
|
|
|
|
|
|
motion_values[Settings::NativeMotion::MotionLeft].euler, 15.0f);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
using namespace Settings::NativeButton;
|
|
|
|
using namespace Settings::NativeButton;
|
|
|
|
|
|
|
|
|
|
|
|
// Face buttons constants
|
|
|
|
// Face buttons constants
|
|
|
@ -750,6 +792,15 @@ void PlayerControlPreview::DrawProController(QPainter& p, const QPointF center)
|
|
|
|
DrawRawJoystick(p, center + QPointF(-50, 105), center + QPointF(50, 105));
|
|
|
|
DrawRawJoystick(p, center + QPointF(-50, 105), center + QPointF(50, 105));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// Draw motion cubes
|
|
|
|
|
|
|
|
using namespace Settings::NativeMotion;
|
|
|
|
|
|
|
|
p.setPen(colors.button);
|
|
|
|
|
|
|
|
p.setBrush(colors.transparent);
|
|
|
|
|
|
|
|
Draw3dCube(p, center + QPointF(0, -100),
|
|
|
|
|
|
|
|
motion_values[Settings::NativeMotion::MotionLeft].euler, 15.0f);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
using namespace Settings::NativeButton;
|
|
|
|
using namespace Settings::NativeButton;
|
|
|
|
|
|
|
|
|
|
|
|
// Face buttons constants
|
|
|
|
// Face buttons constants
|
|
|
@ -2871,6 +2922,46 @@ void PlayerControlPreview::DrawArrow(QPainter& p, const QPointF center, const Di
|
|
|
|
DrawPolygon(p, arrow_symbol);
|
|
|
|
DrawPolygon(p, arrow_symbol);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Draw motion functions
|
|
|
|
|
|
|
|
void PlayerControlPreview::Draw3dCube(QPainter& p, QPointF center, const Common::Vec3f& euler,
|
|
|
|
|
|
|
|
float size) {
|
|
|
|
|
|
|
|
std::array<Common::Vec3f, 8> cube{
|
|
|
|
|
|
|
|
Common::Vec3f{-1, -1, -1},
|
|
|
|
|
|
|
|
{-1, 1, -1},
|
|
|
|
|
|
|
|
{1, 1, -1},
|
|
|
|
|
|
|
|
{1, -1, -1},
|
|
|
|
|
|
|
|
{-1, -1, 1},
|
|
|
|
|
|
|
|
{-1, 1, 1},
|
|
|
|
|
|
|
|
{1, 1, 1},
|
|
|
|
|
|
|
|
{1, -1, 1},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (Common::Vec3f& point : cube) {
|
|
|
|
|
|
|
|
point.RotateFromOrigin(euler.x, euler.y, euler.z);
|
|
|
|
|
|
|
|
point *= size;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const std::array<QPointF, 4> front_face{
|
|
|
|
|
|
|
|
center + QPointF{cube[0].x, cube[0].y},
|
|
|
|
|
|
|
|
center + QPointF{cube[1].x, cube[1].y},
|
|
|
|
|
|
|
|
center + QPointF{cube[2].x, cube[2].y},
|
|
|
|
|
|
|
|
center + QPointF{cube[3].x, cube[3].y},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
const std::array<QPointF, 4> back_face{
|
|
|
|
|
|
|
|
center + QPointF{cube[4].x, cube[4].y},
|
|
|
|
|
|
|
|
center + QPointF{cube[5].x, cube[5].y},
|
|
|
|
|
|
|
|
center + QPointF{cube[6].x, cube[6].y},
|
|
|
|
|
|
|
|
center + QPointF{cube[7].x, cube[7].y},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DrawPolygon(p, front_face);
|
|
|
|
|
|
|
|
DrawPolygon(p, back_face);
|
|
|
|
|
|
|
|
p.drawLine(center + QPointF{cube[0].x, cube[0].y}, center + QPointF{cube[4].x, cube[4].y});
|
|
|
|
|
|
|
|
p.drawLine(center + QPointF{cube[1].x, cube[1].y}, center + QPointF{cube[5].x, cube[5].y});
|
|
|
|
|
|
|
|
p.drawLine(center + QPointF{cube[2].x, cube[2].y}, center + QPointF{cube[6].x, cube[6].y});
|
|
|
|
|
|
|
|
p.drawLine(center + QPointF{cube[3].x, cube[3].y}, center + QPointF{cube[7].x, cube[7].y});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
template <size_t N>
|
|
|
|
template <size_t N>
|
|
|
|
void PlayerControlPreview::DrawPolygon(QPainter& p, const std::array<QPointF, N>& polygon) {
|
|
|
|
void PlayerControlPreview::DrawPolygon(QPainter& p, const std::array<QPointF, N>& polygon) {
|
|
|
|
p.drawPolygon(polygon.data(), static_cast<int>(polygon.size()));
|
|
|
|
p.drawPolygon(polygon.data(), static_cast<int>(polygon.size()));
|
|
|
|