|
|
|
@ -13,11 +13,11 @@ class Stick final : public Common::Input::InputDevice {
|
|
|
|
|
public:
|
|
|
|
|
using Button = std::unique_ptr<Common::Input::InputDevice>;
|
|
|
|
|
|
|
|
|
|
Stick(Button up_, Button down_, Button left_, Button right_, Button modifier_,
|
|
|
|
|
Stick(Button up_, Button down_, Button left_, Button right_, Button modifier_, Button updater_,
|
|
|
|
|
float modifier_scale_, float modifier_angle_)
|
|
|
|
|
: up(std::move(up_)), down(std::move(down_)), left(std::move(left_)),
|
|
|
|
|
right(std::move(right_)), modifier(std::move(modifier_)), modifier_scale(modifier_scale_),
|
|
|
|
|
modifier_angle(modifier_angle_) {
|
|
|
|
|
right(std::move(right_)), modifier(std::move(modifier_)), updater(std::move(updater_)),
|
|
|
|
|
modifier_scale(modifier_scale_), modifier_angle(modifier_angle_) {
|
|
|
|
|
up->SetCallback({
|
|
|
|
|
.on_change =
|
|
|
|
|
[this](const Common::Input::CallbackStatus& callback_) {
|
|
|
|
@ -48,6 +48,9 @@ public:
|
|
|
|
|
UpdateModButtonStatus(callback_);
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
updater->SetCallback({
|
|
|
|
|
.on_change = [this](const Common::Input::CallbackStatus& callback_) { SoftUpdate(); },
|
|
|
|
|
});
|
|
|
|
|
last_x_axis_value = 0.0f;
|
|
|
|
|
last_y_axis_value = 0.0f;
|
|
|
|
|
}
|
|
|
|
@ -248,7 +251,7 @@ public:
|
|
|
|
|
modifier->ForceUpdate();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SoftUpdate() override {
|
|
|
|
|
void SoftUpdate() {
|
|
|
|
|
Common::Input::CallbackStatus status{
|
|
|
|
|
.type = Common::Input::InputType::Stick,
|
|
|
|
|
.stick_status = GetStatus(),
|
|
|
|
@ -308,6 +311,7 @@ private:
|
|
|
|
|
Button left;
|
|
|
|
|
Button right;
|
|
|
|
|
Button modifier;
|
|
|
|
|
Button updater;
|
|
|
|
|
float modifier_scale{};
|
|
|
|
|
float modifier_angle{};
|
|
|
|
|
float angle{};
|
|
|
|
@ -331,11 +335,12 @@ std::unique_ptr<Common::Input::InputDevice> StickFromButton::Create(
|
|
|
|
|
auto left = Common::Input::CreateInputDeviceFromString(params.Get("left", null_engine));
|
|
|
|
|
auto right = Common::Input::CreateInputDeviceFromString(params.Get("right", null_engine));
|
|
|
|
|
auto modifier = Common::Input::CreateInputDeviceFromString(params.Get("modifier", null_engine));
|
|
|
|
|
auto updater = Common::Input::CreateInputDeviceFromString("engine:updater,button:0");
|
|
|
|
|
auto modifier_scale = params.Get("modifier_scale", 0.5f);
|
|
|
|
|
auto modifier_angle = params.Get("modifier_angle", 5.5f);
|
|
|
|
|
return std::make_unique<Stick>(std::move(up), std::move(down), std::move(left),
|
|
|
|
|
std::move(right), std::move(modifier), modifier_scale,
|
|
|
|
|
modifier_angle);
|
|
|
|
|
std::move(right), std::move(modifier), std::move(updater),
|
|
|
|
|
modifier_scale, modifier_angle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace InputCommon
|
|
|
|
|