Make haptic pulse duration configurable in VirtualPadDevice

This commit is contained in:
Gabriel Calero 2018-05-17 11:37:13 -03:00
parent 65a9b98b97
commit 8741c5e6a4
9 changed files with 18 additions and 21 deletions

View file

@ -158,9 +158,9 @@ JNIEXPORT void Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeOnCrea
__interfaceActivity.callMethod<void>("openAndroidActivity", "(Ljava/lang/String;Z)V", string.object<jstring>(), jBackToScene);
});
QObject::connect(&AndroidHelper::instance(), &AndroidHelper::hapticFeedbackRequested, [](const QString &c) {
QAndroidJniObject string = QAndroidJniObject::fromString(c);
__interfaceActivity.callMethod<void>("performHapticFeedback", "(Ljava/lang/String;)V", string.object<jstring>());
QObject::connect(&AndroidHelper::instance(), &AndroidHelper::hapticFeedbackRequested, [](int duration) {
jint iDuration = (jint) duration;
__interfaceActivity.callMethod<void>("performHapticFeedback", "(I)V", iDuration);
});
}

View file

@ -214,12 +214,9 @@ public class InterfaceActivity extends QtActivity {
super.isLoading = false;
}
public void performHapticFeedback(String feedbackConstant) {
switch (feedbackConstant) {
case "CONTEXT_CLICK":
default:
mVibrator.vibrate(50);
break;
public void performHapticFeedback(int duration) {
if (duration > 0) {
mVibrator.vibrate(duration);
}
}

View file

@ -45,8 +45,8 @@ void AndroidHelper::notifyLoadComplete() {
emit qtAppLoadComplete();
}
void AndroidHelper::performHapticFeedback(const QString& feedbackConstant) {
emit hapticFeedbackRequested(feedbackConstant);
void AndroidHelper::notifyEnterForeground() {
emit enterForeground();
}
void AndroidHelper::showLoginDialog() {

View file

@ -27,7 +27,7 @@ public:
void requestActivity(const QString &activityName, const bool backToScene);
void notifyLoadComplete();
void performHapticFeedback(const QString& feedbackConstant);
void performHapticFeedback(int duration);
QSharedPointer<AccountManager> getAccountManager() { return _accountManager; }
AndroidHelper(AndroidHelper const&) = delete;
@ -40,7 +40,7 @@ signals:
void androidActivityRequested(const QString &activityName, const bool backToScene);
void qtAppLoadComplete();
void hapticFeedbackRequested(const QString &feedbackConstant);
void hapticFeedbackRequested(int duration);
private:
AndroidHelper();

View file

@ -2867,8 +2867,8 @@ void Application::initializeUi() {
#if defined(Q_OS_ANDROID)
auto& virtualPadManager = VirtualPad::Manager::instance();
connect(&virtualPadManager, &VirtualPad::Manager::hapticFeedbackRequested,
this, []() {
AndroidHelper::instance().performHapticFeedback("CONTEXT_CLICK");
this, [](int duration) {
AndroidHelper::instance().performHapticFeedback(duration);
});
#endif
}

View file

@ -189,7 +189,7 @@ void TouchscreenVirtualPadDevice::InputDevice::update(float deltaTime, const con
bool TouchscreenVirtualPadDevice::InputDevice::triggerHapticPulse(float strength, float duration, controller::Hand hand) {
auto& virtualPadManager = VirtualPad::Manager::instance();
virtualPadManager.requestHapticFeedback();
virtualPadManager.requestHapticFeedback((int) duration);
return true;
}

View file

@ -84,8 +84,8 @@ namespace VirtualPad {
_jumpButtonPosition = point;
}
void Manager::requestHapticFeedback() {
emit hapticFeedbackRequested();
void Manager::requestHapticFeedback(int duration) {
emit hapticFeedbackRequested(duration);
}
Instance* Manager::getLeftVirtualPad() {

View file

@ -46,7 +46,7 @@ namespace VirtualPad {
void setExtraBottomMargin(int margin);
glm::vec2 getJumpButtonPosition();
void setJumpButtonPosition(glm::vec2 point);
void requestHapticFeedback();
void requestHapticFeedback(int duration);
static const float DPI;
static const float BASE_DIAMETER_PIXELS;
@ -58,7 +58,7 @@ namespace VirtualPad {
static const float JUMP_BTN_RIGHT_MARGIN_PIXELS;
signals:
void hapticFeedbackRequested();
void hapticFeedbackRequested(int duration);
private:
Instance _leftVPadInstance;

View file

@ -69,7 +69,7 @@ function shutdown() {
}
function modeButtonPressed() {
Controller.triggerHapticPulse(Controller.findDevice("TouchscreenVirtualPad"), 0.1, 1.0, 0);
Controller.triggerHapticPulseOnDevice(Controller.findDevice("TouchscreenVirtualPad"), 0.1, 40.0, 0);
}
function modeButtonClicked() {