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),
_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;
}

View file

@ -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<float> _driveGear3Setting;
Setting::Handle<float> _driveGear4Setting;
Setting::Handle<float> _driveGear5Setting;
Setting::Handle<float> _analogWalkSpeedSetting;
Setting::Handle<float> _analogPlusWalkSpeedSetting;
Setting::Handle<int> _controlSchemeIndexSetting;
std::vector<Setting::Handle<QUuid>> _avatarEntityIDSettings;
std::vector<Setting::Handle<QByteArray>> _avatarEntityDataSettings;

View file

@ -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" };
{

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_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)