From 7a8dfe0aafd3548d90d4272802c1feabf573cd0c Mon Sep 17 00:00:00 2001 From: r3tk0n Date: Thu, 21 Mar 2019 15:06:21 -0700 Subject: [PATCH] Fix run speeds. --- interface/src/avatar/MyAvatar.cpp | 44 +++++++++- interface/src/avatar/MyAvatar.h | 10 +++ interface/src/ui/PreferencesDialog.cpp | 112 ++++++++++++++----------- libraries/shared/src/AvatarConstants.h | 8 +- 4 files changed, 118 insertions(+), 56 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index c2c1c1a977..8b3a9ce819 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -177,6 +177,8 @@ MyAvatar::MyAvatar(QThread* thread) : _driveGear3Setting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "driveGear3", _driveGear3), _driveGear4Setting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "driveGear4", _driveGear4), _driveGear5Setting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "driveGear5", _driveGear5), + _analogWalkSpeedSetting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "analogWalkSpeed", _analogWalkSpeed.get()), + _analogPlusWalkSpeedSetting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "analogPlusWalkSpeed", _analogPlusWalkSpeed.get()), _controlSchemeIndexSetting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "controlSchemeIndex", _controlSchemeIndex), _userRecenterModelSetting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "userRecenterModel", USER_RECENTER_MODEL_AUTO) { @@ -1301,6 +1303,8 @@ void MyAvatar::saveData() { _driveGear3Setting.set(getDriveGear3()); _driveGear4Setting.set(getDriveGear4()); _driveGear5Setting.set(getDriveGear5()); + _analogWalkSpeedSetting.set(getAnalogWalkSpeed()); + _analogPlusWalkSpeedSetting.set(getAnalogPlusWalkSpeed()); _controlSchemeIndexSetting.set(getControlSchemeIndex()); _userRecenterModelSetting.set(userRecenterModelToString(getUserRecenterModel())); @@ -1886,6 +1890,8 @@ void MyAvatar::loadData() { setDriveGear4(firstRunVal.get() ? DEFAULT_GEAR_4 : _driveGear4Setting.get()); setDriveGear5(firstRunVal.get() ? DEFAULT_GEAR_5 : _driveGear5Setting.get()); setControlSchemeIndex(firstRunVal.get() ? CONTROLS_DEFAULT : _controlSchemeIndexSetting.get()); + setAnalogWalkSpeed(firstRunVal.get() ? ANALOG_AVATAR_MAX_WALKING_SPEED : _analogWalkSpeedSetting.get()); + setAnalogPlusWalkSpeed(firstRunVal.get() ? ANALOG_PLUS_AVATAR_MAX_WALKING_SPEED : _analogPlusWalkSpeedSetting.get()); setFlyingEnabled(getFlyingEnabled()); setDisplayName(_displayNameSetting.get()); @@ -3351,7 +3357,7 @@ float MyAvatar::calculateGearedSpeed(const float driveKey) { } glm::vec3 MyAvatar::scaleMotorSpeed(const glm::vec3 forward, const glm::vec3 right) { - float stickFullOn = 0.95f; + float stickFullOn = 0.85f; auto zSpeed = getDriveKey(TRANSLATE_Z); auto xSpeed = getDriveKey(TRANSLATE_X); glm::vec3 direction; @@ -4870,6 +4876,42 @@ float MyAvatar::getSprintSpeed() const { } } +void MyAvatar::setAnalogWalkSpeed(float value) { + _analogWalkSpeed.set(value); + // Sprint speed for Analog should be double walk speed. + _analogSprintSpeed.set(value * 2.0f); +} + +float MyAvatar::getAnalogWalkSpeed() const { + return _analogWalkSpeed.get(); +} + +void MyAvatar::setAnalogSprintSpeed(float value) { + _analogSprintSpeed.set(value); +} + +float MyAvatar::getAnalogSprintSpeed() const { + return _analogSprintSpeed.get(); +} + +void MyAvatar::setAnalogPlusWalkSpeed(float value) { + _analogPlusWalkSpeed.set(value); + // Sprint speed for Analog Plus should be double walk speed. + _analogPlusSprintSpeed.set(value * 2.0f); +} + +float MyAvatar::getAnalogPlusWalkSpeed() const { + return _analogPlusWalkSpeed.get(); +} + +void MyAvatar::setAnalogPlusSprintSpeed(float value) { + _analogPlusSprintSpeed.set(value); +} + +float MyAvatar::getAnalogPlusSprintSpeed() const { + return _analogPlusSprintSpeed.get(); +} + void MyAvatar::setSitStandStateChange(bool stateChanged) { _sitStandStateChange = stateChanged; } diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 7a7e9e2c79..b7b35ef637 100755 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -1274,6 +1274,14 @@ public: float getWalkBackwardSpeed() const; void setSprintSpeed(float value); float getSprintSpeed() const; + void setAnalogWalkSpeed(float value); + float getAnalogWalkSpeed() const; + void setAnalogSprintSpeed(float value); + float getAnalogSprintSpeed() const; + void setAnalogPlusWalkSpeed(float value); + float getAnalogPlusWalkSpeed() const; + void setAnalogPlusSprintSpeed(float value); + float getAnalogPlusSprintSpeed() const; void setSitStandStateChange(bool stateChanged); float getSitStandStateChange() const; void updateSitStandState(float newHeightReading, float dt); @@ -2123,6 +2131,8 @@ private: Setting::Handle _driveGear3Setting; Setting::Handle _driveGear4Setting; Setting::Handle _driveGear5Setting; + Setting::Handle _analogWalkSpeedSetting; + Setting::Handle _analogPlusWalkSpeedSetting; Setting::Handle _controlSchemeIndexSetting; std::vector> _avatarEntityIDSettings; std::vector> _avatarEntityDataSettings; diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index 053b3b582a..81f018c119 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -314,6 +314,16 @@ void setupPreferences() { preference->setItems(items); preferences->addPreference(preference); } + { + auto getter = [myAvatar]()->float { return myAvatar->getAnalogPlusWalkSpeed(); }; + auto setter = [myAvatar](float value) { myAvatar->setAnalogPlusWalkSpeed(value); }; + auto preference = new SpinnerSliderPreference(VR_MOVEMENT, "Analog++ Walk Speed", getter, setter); + preference->setMin(6.0f); + preference->setMax(30.0f); + preference->setStep(1); + preference->setDecimals(2); + preferences->addPreference(preference); + } { auto getter = [myAvatar]()->bool { return myAvatar->getShowPlayArea(); }; auto setter = [myAvatar](bool value) { myAvatar->setShowPlayArea(value); }; @@ -369,57 +379,57 @@ void setupPreferences() { preferences->addPreference(preference); } - static const QString ACCEL_CURVE{ "Acceleration Step Function" }; - { - auto getter = [myAvatar]()->float { return myAvatar->getDriveGear1(); }; - auto setter = [myAvatar](float value) { myAvatar->setDriveGear1(value); }; - auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 1", getter, setter); - preference->setMin(0.0f); - preference->setMax(1.0f); - preference->setStep(1); - preference->setDecimals(2); - preferences->addPreference(preference); - } - { - auto getter = [myAvatar]()->float { return myAvatar->getDriveGear2(); }; - auto setter = [myAvatar](float value) { myAvatar->setDriveGear2(value); }; - auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 2", getter, setter); - preference->setMin(0.0f); - preference->setMax(1.0f); - preference->setStep(1); - preference->setDecimals(2); - preferences->addPreference(preference); - } - { - auto getter = [myAvatar]()->float { return myAvatar->getDriveGear3(); }; - auto setter = [myAvatar](float value) { myAvatar->setDriveGear3(value); }; - auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 3", getter, setter); - preference->setMin(0.0f); - preference->setMax(1.0f); - preference->setStep(1); - preference->setDecimals(2); - preferences->addPreference(preference); - } - { - auto getter = [myAvatar]()->float { return myAvatar->getDriveGear4(); }; - auto setter = [myAvatar](float value) { myAvatar->setDriveGear4(value); }; - auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 4", getter, setter); - preference->setMin(0.0f); - preference->setMax(1.0f); - preference->setStep(1); - preference->setDecimals(2); - preferences->addPreference(preference); - } - { - auto getter = [myAvatar]()->float { return myAvatar->getDriveGear5(); }; - auto setter = [myAvatar](float value) { myAvatar->setDriveGear5(value); }; - auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 5", getter, setter); - preference->setMin(0.0f); - preference->setMax(1.0f); - preference->setStep(1); - preference->setDecimals(2); - preferences->addPreference(preference); - } + //static const QString ACCEL_CURVE{ "Acceleration Step Function" }; + //{ + // auto getter = [myAvatar]()->float { return myAvatar->getDriveGear1(); }; + // auto setter = [myAvatar](float value) { myAvatar->setDriveGear1(value); }; + // auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 1", getter, setter); + // preference->setMin(0.0f); + // preference->setMax(1.0f); + // preference->setStep(1); + // preference->setDecimals(2); + // preferences->addPreference(preference); + //} + //{ + // auto getter = [myAvatar]()->float { return myAvatar->getDriveGear2(); }; + // auto setter = [myAvatar](float value) { myAvatar->setDriveGear2(value); }; + // auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 2", getter, setter); + // preference->setMin(0.0f); + // preference->setMax(1.0f); + // preference->setStep(1); + // preference->setDecimals(2); + // preferences->addPreference(preference); + //} + //{ + // auto getter = [myAvatar]()->float { return myAvatar->getDriveGear3(); }; + // auto setter = [myAvatar](float value) { myAvatar->setDriveGear3(value); }; + // auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 3", getter, setter); + // preference->setMin(0.0f); + // preference->setMax(1.0f); + // preference->setStep(1); + // preference->setDecimals(2); + // preferences->addPreference(preference); + //} + //{ + // auto getter = [myAvatar]()->float { return myAvatar->getDriveGear4(); }; + // auto setter = [myAvatar](float value) { myAvatar->setDriveGear4(value); }; + // auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 4", getter, setter); + // preference->setMin(0.0f); + // preference->setMax(1.0f); + // preference->setStep(1); + // preference->setDecimals(2); + // preferences->addPreference(preference); + //} + //{ + // auto getter = [myAvatar]()->float { return myAvatar->getDriveGear5(); }; + // auto setter = [myAvatar](float value) { myAvatar->setDriveGear5(value); }; + // auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 5", getter, setter); + // preference->setMin(0.0f); + // preference->setMax(1.0f); + // preference->setStep(1); + // preference->setDecimals(2); + // preferences->addPreference(preference); + //} static const QString AVATAR_CAMERA{ "Mouse Sensitivity" }; { diff --git a/libraries/shared/src/AvatarConstants.h b/libraries/shared/src/AvatarConstants.h index a150eb34da..4e3642de97 100644 --- a/libraries/shared/src/AvatarConstants.h +++ b/libraries/shared/src/AvatarConstants.h @@ -72,20 +72,20 @@ const float DEFAULT_AVATAR_MAX_FLYING_SPEED = 30.0f; // meters / second const float DEFAULT_AVATAR_MAX_SPRINT_SPEED = 3.0f; // meters / second const float DEFAULT_AVATAR_WALK_SPEED_THRESHOLD = 0.15f; // meters / second -const float ANALOG_AVATAR_MAX_WALKING_SPEED = 2.6f; // meters / second +const float ANALOG_AVATAR_MAX_WALKING_SPEED = 6.0f; // meters / second const float ANALOG_AVATAR_MAX_WALKING_BACKWARD_SPEED = 2.2f; // meters / second const float ANALOG_AVATAR_MAX_FLYING_SPEED = 30.0f; // meters / second -const float ANALOG_AVATAR_MAX_SPRINT_SPEED = 3.0f; // meters / second +const float ANALOG_AVATAR_MAX_SPRINT_SPEED = 8.0f; // meters / second const float ANALOG_AVATAR_GEAR_1 = 0.2f; // meters / second const float ANALOG_AVATAR_GEAR_2 = 0.4f; // meters / second const float ANALOG_AVATAR_GEAR_3 = 0.6f; // meters / second const float ANALOG_AVATAR_GEAR_4 = 0.8f; // meters / second const float ANALOG_AVATAR_GEAR_5 = 1.0f; // meters / second -const float ANALOG_PLUS_AVATAR_MAX_WALKING_SPEED = 3.3f; // meters / second +const float ANALOG_PLUS_AVATAR_MAX_WALKING_SPEED = 10.0f; // meters / second const float ANALOG_PLUS_AVATAR_MAX_WALKING_BACKWARD_SPEED = 2.42f; // meters / second const float ANALOG_PLUS_AVATAR_MAX_FLYING_SPEED = 30.0f; // meters / second -const float ANALOG_PLUS_AVATAR_MAX_SPRINT_SPEED = 4.0f; // meters / second +const float ANALOG_PLUS_AVATAR_MAX_SPRINT_SPEED = 20.0f; // meters / second const float DEFAULT_AVATAR_GRAVITY = -5.0f; // meters / second^2 (world) const float DEFAULT_AVATAR_JUMP_SPEED = 3.5f; // meters / second (sensor)