mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 14:03:55 +02:00
Fix run speeds.
This commit is contained in:
parent
08bc47d722
commit
7a8dfe0aaf
4 changed files with 118 additions and 56 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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" };
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue