Fix run speeds.

This commit is contained in:
r3tk0n 2019-03-21 15:06:21 -07:00
parent 08bc47d722
commit 7a8dfe0aaf
4 changed files with 118 additions and 56 deletions

View file

@ -177,6 +177,8 @@ MyAvatar::MyAvatar(QThread* thread) :
_driveGear3Setting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "driveGear3", _driveGear3), _driveGear3Setting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "driveGear3", _driveGear3),
_driveGear4Setting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "driveGear4", _driveGear4), _driveGear4Setting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "driveGear4", _driveGear4),
_driveGear5Setting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "driveGear5", _driveGear5), _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), _controlSchemeIndexSetting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "controlSchemeIndex", _controlSchemeIndex),
_userRecenterModelSetting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "userRecenterModel", USER_RECENTER_MODEL_AUTO) _userRecenterModelSetting(QStringList() << AVATAR_SETTINGS_GROUP_NAME << "userRecenterModel", USER_RECENTER_MODEL_AUTO)
{ {
@ -1301,6 +1303,8 @@ void MyAvatar::saveData() {
_driveGear3Setting.set(getDriveGear3()); _driveGear3Setting.set(getDriveGear3());
_driveGear4Setting.set(getDriveGear4()); _driveGear4Setting.set(getDriveGear4());
_driveGear5Setting.set(getDriveGear5()); _driveGear5Setting.set(getDriveGear5());
_analogWalkSpeedSetting.set(getAnalogWalkSpeed());
_analogPlusWalkSpeedSetting.set(getAnalogPlusWalkSpeed());
_controlSchemeIndexSetting.set(getControlSchemeIndex()); _controlSchemeIndexSetting.set(getControlSchemeIndex());
_userRecenterModelSetting.set(userRecenterModelToString(getUserRecenterModel())); _userRecenterModelSetting.set(userRecenterModelToString(getUserRecenterModel()));
@ -1886,6 +1890,8 @@ void MyAvatar::loadData() {
setDriveGear4(firstRunVal.get() ? DEFAULT_GEAR_4 : _driveGear4Setting.get()); setDriveGear4(firstRunVal.get() ? DEFAULT_GEAR_4 : _driveGear4Setting.get());
setDriveGear5(firstRunVal.get() ? DEFAULT_GEAR_5 : _driveGear5Setting.get()); setDriveGear5(firstRunVal.get() ? DEFAULT_GEAR_5 : _driveGear5Setting.get());
setControlSchemeIndex(firstRunVal.get() ? CONTROLS_DEFAULT : _controlSchemeIndexSetting.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()); setFlyingEnabled(getFlyingEnabled());
setDisplayName(_displayNameSetting.get()); 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) { 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 zSpeed = getDriveKey(TRANSLATE_Z);
auto xSpeed = getDriveKey(TRANSLATE_X); auto xSpeed = getDriveKey(TRANSLATE_X);
glm::vec3 direction; 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) { void MyAvatar::setSitStandStateChange(bool stateChanged) {
_sitStandStateChange = stateChanged; _sitStandStateChange = stateChanged;
} }

View file

@ -1274,6 +1274,14 @@ public:
float getWalkBackwardSpeed() const; float getWalkBackwardSpeed() const;
void setSprintSpeed(float value); void setSprintSpeed(float value);
float getSprintSpeed() const; 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); void setSitStandStateChange(bool stateChanged);
float getSitStandStateChange() const; float getSitStandStateChange() const;
void updateSitStandState(float newHeightReading, float dt); void updateSitStandState(float newHeightReading, float dt);
@ -2123,6 +2131,8 @@ private:
Setting::Handle<float> _driveGear3Setting; Setting::Handle<float> _driveGear3Setting;
Setting::Handle<float> _driveGear4Setting; Setting::Handle<float> _driveGear4Setting;
Setting::Handle<float> _driveGear5Setting; Setting::Handle<float> _driveGear5Setting;
Setting::Handle<float> _analogWalkSpeedSetting;
Setting::Handle<float> _analogPlusWalkSpeedSetting;
Setting::Handle<int> _controlSchemeIndexSetting; Setting::Handle<int> _controlSchemeIndexSetting;
std::vector<Setting::Handle<QUuid>> _avatarEntityIDSettings; std::vector<Setting::Handle<QUuid>> _avatarEntityIDSettings;
std::vector<Setting::Handle<QByteArray>> _avatarEntityDataSettings; std::vector<Setting::Handle<QByteArray>> _avatarEntityDataSettings;

View file

@ -314,6 +314,16 @@ void setupPreferences() {
preference->setItems(items); preference->setItems(items);
preferences->addPreference(preference); 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 getter = [myAvatar]()->bool { return myAvatar->getShowPlayArea(); };
auto setter = [myAvatar](bool value) { myAvatar->setShowPlayArea(value); }; auto setter = [myAvatar](bool value) { myAvatar->setShowPlayArea(value); };
@ -369,57 +379,57 @@ void setupPreferences() {
preferences->addPreference(preference); preferences->addPreference(preference);
} }
static const QString ACCEL_CURVE{ "Acceleration Step Function" }; //static const QString ACCEL_CURVE{ "Acceleration Step Function" };
{ //{
auto getter = [myAvatar]()->float { return myAvatar->getDriveGear1(); }; // auto getter = [myAvatar]()->float { return myAvatar->getDriveGear1(); };
auto setter = [myAvatar](float value) { myAvatar->setDriveGear1(value); }; // auto setter = [myAvatar](float value) { myAvatar->setDriveGear1(value); };
auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 1", getter, setter); // auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 1", getter, setter);
preference->setMin(0.0f); // preference->setMin(0.0f);
preference->setMax(1.0f); // preference->setMax(1.0f);
preference->setStep(1); // preference->setStep(1);
preference->setDecimals(2); // preference->setDecimals(2);
preferences->addPreference(preference); // preferences->addPreference(preference);
} //}
{ //{
auto getter = [myAvatar]()->float { return myAvatar->getDriveGear2(); }; // auto getter = [myAvatar]()->float { return myAvatar->getDriveGear2(); };
auto setter = [myAvatar](float value) { myAvatar->setDriveGear2(value); }; // auto setter = [myAvatar](float value) { myAvatar->setDriveGear2(value); };
auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 2", getter, setter); // auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 2", getter, setter);
preference->setMin(0.0f); // preference->setMin(0.0f);
preference->setMax(1.0f); // preference->setMax(1.0f);
preference->setStep(1); // preference->setStep(1);
preference->setDecimals(2); // preference->setDecimals(2);
preferences->addPreference(preference); // preferences->addPreference(preference);
} //}
{ //{
auto getter = [myAvatar]()->float { return myAvatar->getDriveGear3(); }; // auto getter = [myAvatar]()->float { return myAvatar->getDriveGear3(); };
auto setter = [myAvatar](float value) { myAvatar->setDriveGear3(value); }; // auto setter = [myAvatar](float value) { myAvatar->setDriveGear3(value); };
auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 3", getter, setter); // auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 3", getter, setter);
preference->setMin(0.0f); // preference->setMin(0.0f);
preference->setMax(1.0f); // preference->setMax(1.0f);
preference->setStep(1); // preference->setStep(1);
preference->setDecimals(2); // preference->setDecimals(2);
preferences->addPreference(preference); // preferences->addPreference(preference);
} //}
{ //{
auto getter = [myAvatar]()->float { return myAvatar->getDriveGear4(); }; // auto getter = [myAvatar]()->float { return myAvatar->getDriveGear4(); };
auto setter = [myAvatar](float value) { myAvatar->setDriveGear4(value); }; // auto setter = [myAvatar](float value) { myAvatar->setDriveGear4(value); };
auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 4", getter, setter); // auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 4", getter, setter);
preference->setMin(0.0f); // preference->setMin(0.0f);
preference->setMax(1.0f); // preference->setMax(1.0f);
preference->setStep(1); // preference->setStep(1);
preference->setDecimals(2); // preference->setDecimals(2);
preferences->addPreference(preference); // preferences->addPreference(preference);
} //}
{ //{
auto getter = [myAvatar]()->float { return myAvatar->getDriveGear5(); }; // auto getter = [myAvatar]()->float { return myAvatar->getDriveGear5(); };
auto setter = [myAvatar](float value) { myAvatar->setDriveGear5(value); }; // auto setter = [myAvatar](float value) { myAvatar->setDriveGear5(value); };
auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 5", getter, setter); // auto preference = new SpinnerPreference(ACCEL_CURVE, "Gear 5", getter, setter);
preference->setMin(0.0f); // preference->setMin(0.0f);
preference->setMax(1.0f); // preference->setMax(1.0f);
preference->setStep(1); // preference->setStep(1);
preference->setDecimals(2); // preference->setDecimals(2);
preferences->addPreference(preference); // preferences->addPreference(preference);
} //}
static const QString AVATAR_CAMERA{ "Mouse Sensitivity" }; static const QString AVATAR_CAMERA{ "Mouse Sensitivity" };
{ {

View file

@ -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_MAX_SPRINT_SPEED = 3.0f; // meters / second
const float DEFAULT_AVATAR_WALK_SPEED_THRESHOLD = 0.15f; // 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_WALKING_BACKWARD_SPEED = 2.2f; // meters / second
const float ANALOG_AVATAR_MAX_FLYING_SPEED = 30.0f; // 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_1 = 0.2f; // meters / second
const float ANALOG_AVATAR_GEAR_2 = 0.4f; // 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_3 = 0.6f; // meters / second
const float ANALOG_AVATAR_GEAR_4 = 0.8f; // 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_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_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_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_GRAVITY = -5.0f; // meters / second^2 (world)
const float DEFAULT_AVATAR_JUMP_SPEED = 3.5f; // meters / second (sensor) const float DEFAULT_AVATAR_JUMP_SPEED = 3.5f; // meters / second (sensor)