mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01: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),
|
_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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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" };
|
||||||
{
|
{
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue