mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 03:58:07 +02:00
Divorce HMD and Desktop flying settings, implement setters and getters, change loadData and saveData in MyAvatar.cpp
This commit is contained in:
parent
5efd981ecd
commit
f8c611b1d0
4 changed files with 76 additions and 11 deletions
|
@ -4844,12 +4844,6 @@ void Application::loadSettings() {
|
||||||
|
|
||||||
isFirstPerson = (qApp->isHMDMode());
|
isFirstPerson = (qApp->isHMDMode());
|
||||||
|
|
||||||
// Flying should be disabled by default in HMD mode on first run, and it
|
|
||||||
// should be enabled by default in desktop mode.
|
|
||||||
|
|
||||||
auto myAvatar = getMyAvatar();
|
|
||||||
myAvatar->setFlyingEnabled(!isFirstPerson);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// if this is not the first run, the camera will be initialized differently depending on user settings
|
// if this is not the first run, the camera will be initialized differently depending on user settings
|
||||||
|
|
||||||
|
|
|
@ -577,9 +577,11 @@ void MyAvatar::updateChildCauterization(SpatiallyNestablePointer object, bool ca
|
||||||
|
|
||||||
void MyAvatar::simulate(float deltaTime) {
|
void MyAvatar::simulate(float deltaTime) {
|
||||||
PerformanceTimer perfTimer("simulate");
|
PerformanceTimer perfTimer("simulate");
|
||||||
|
|
||||||
animateScaleChanges(deltaTime);
|
animateScaleChanges(deltaTime);
|
||||||
|
|
||||||
|
setFlyingEnabled(getFlyingEnabled());
|
||||||
|
|
||||||
if (_cauterizationNeedsUpdate) {
|
if (_cauterizationNeedsUpdate) {
|
||||||
_cauterizationNeedsUpdate = false;
|
_cauterizationNeedsUpdate = false;
|
||||||
|
|
||||||
|
@ -1131,6 +1133,8 @@ void MyAvatar::saveData() {
|
||||||
settings.setValue("collisionSoundURL", _collisionSoundURL);
|
settings.setValue("collisionSoundURL", _collisionSoundURL);
|
||||||
settings.setValue("useSnapTurn", _useSnapTurn);
|
settings.setValue("useSnapTurn", _useSnapTurn);
|
||||||
settings.setValue("userHeight", getUserHeight());
|
settings.setValue("userHeight", getUserHeight());
|
||||||
|
settings.setValue("flyingDesktop", getFlyingDesktopPref());
|
||||||
|
settings.setValue("flyingHMD", getFlyingHMDPref());
|
||||||
settings.setValue("enabledFlying", getFlyingEnabled());
|
settings.setValue("enabledFlying", getFlyingEnabled());
|
||||||
|
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
@ -1281,8 +1285,13 @@ void MyAvatar::loadData() {
|
||||||
settings.remove("avatarEntityData");
|
settings.remove("avatarEntityData");
|
||||||
}
|
}
|
||||||
setAvatarEntityDataChanged(true);
|
setAvatarEntityDataChanged(true);
|
||||||
|
|
||||||
|
// Flying preferences must be loaded before calling setFlyingEnabled()
|
||||||
Setting::Handle<bool> firstRunVal { Settings::firstRun, true };
|
Setting::Handle<bool> firstRunVal { Settings::firstRun, true };
|
||||||
setFlyingEnabled(firstRunVal.get() ? getFlyingEnabled() : settings.value("enabledFlying").toBool());
|
setFlyingDesktopPref(firstRunVal.get() ? true : settings.value("flyingDesktop").toBool());
|
||||||
|
setFlyingHMDPref(firstRunVal.get() ? false : settings.value("flyingHMD").toBool());
|
||||||
|
setFlyingEnabled(getFlyingEnabled());
|
||||||
|
|
||||||
setDisplayName(settings.value("displayName").toString());
|
setDisplayName(settings.value("displayName").toString());
|
||||||
setCollisionSoundURL(settings.value("collisionSoundURL", DEFAULT_AVATAR_COLLISION_SOUND_URL).toString());
|
setCollisionSoundURL(settings.value("collisionSoundURL", DEFAULT_AVATAR_COLLISION_SOUND_URL).toString());
|
||||||
setSnapTurn(settings.value("useSnapTurn", _useSnapTurn).toBool());
|
setSnapTurn(settings.value("useSnapTurn", _useSnapTurn).toBool());
|
||||||
|
@ -2825,6 +2834,12 @@ void MyAvatar::setFlyingEnabled(bool enabled) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (qApp->isHMDMode()) {
|
||||||
|
setFlyingHMDPref(enabled);
|
||||||
|
} else {
|
||||||
|
setFlyingDesktopPref(enabled);
|
||||||
|
}
|
||||||
|
|
||||||
_enableFlying = enabled;
|
_enableFlying = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2840,7 +2855,37 @@ bool MyAvatar::isInAir() {
|
||||||
|
|
||||||
bool MyAvatar::getFlyingEnabled() {
|
bool MyAvatar::getFlyingEnabled() {
|
||||||
// May return true even if client is not allowed to fly in the zone.
|
// May return true even if client is not allowed to fly in the zone.
|
||||||
return _enableFlying;
|
return (qApp->isHMDMode() ? getFlyingHMDPref() : getFlyingDesktopPref());
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyAvatar::setFlyingDesktopPref(bool enabled) {
|
||||||
|
if (QThread::currentThread() != thread()) {
|
||||||
|
QMetaObject::invokeMethod(this, "setFlyingDesktopPref", Q_ARG(bool, enabled));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (!(qApp->isHMDMode())) { _enableFlying = enabled; }
|
||||||
|
|
||||||
|
_flyingPrefDesktop = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MyAvatar::getFlyingDesktopPref() {
|
||||||
|
return _flyingPrefDesktop;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyAvatar::setFlyingHMDPref(bool enabled) {
|
||||||
|
if (QThread::currentThread() != thread()) {
|
||||||
|
QMetaObject::invokeMethod(this, "setFlyingHMDPref", Q_ARG(bool, enabled));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if ((qApp->isHMDMode())) { _enableFlying = enabled; }
|
||||||
|
|
||||||
|
_flyingPrefHMD = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MyAvatar::getFlyingHMDPref() {
|
||||||
|
return _flyingPrefHMD;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Public interface for targetscale
|
// Public interface for targetscale
|
||||||
|
|
|
@ -953,6 +953,30 @@ public:
|
||||||
*/
|
*/
|
||||||
Q_INVOKABLE bool getFlyingEnabled();
|
Q_INVOKABLE bool getFlyingEnabled();
|
||||||
|
|
||||||
|
/**jsdoc
|
||||||
|
* @function MyAvatar.setFlyingDesktopPref
|
||||||
|
* @param {boolean} enabled
|
||||||
|
*/
|
||||||
|
Q_INVOKABLE void setFlyingDesktopPref(bool enabled);
|
||||||
|
|
||||||
|
/**jsdoc
|
||||||
|
* @function MyAvatar.getFlyingDesktopPref
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
|
Q_INVOKABLE bool getFlyingDesktopPref();
|
||||||
|
|
||||||
|
/**jsdoc
|
||||||
|
* @function MyAvatar.setFlyingDesktopPref
|
||||||
|
* @param {boolean} enabled
|
||||||
|
*/
|
||||||
|
Q_INVOKABLE void setFlyingHMDPref(bool enabled);
|
||||||
|
|
||||||
|
/**jsdoc
|
||||||
|
* @function MyAvatar.getFlyingDesktopPref
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
|
Q_INVOKABLE bool getFlyingHMDPref();
|
||||||
|
|
||||||
|
|
||||||
/**jsdoc
|
/**jsdoc
|
||||||
* @function MyAvatar.getAvatarScale
|
* @function MyAvatar.getAvatarScale
|
||||||
|
@ -1503,6 +1527,8 @@ private:
|
||||||
std::bitset<MAX_DRIVE_KEYS> _disabledDriveKeys;
|
std::bitset<MAX_DRIVE_KEYS> _disabledDriveKeys;
|
||||||
|
|
||||||
bool _enableFlying { false };
|
bool _enableFlying { false };
|
||||||
|
bool _flyingPrefDesktop { true };
|
||||||
|
bool _flyingPrefHMD { false };
|
||||||
bool _wasPushing { false };
|
bool _wasPushing { false };
|
||||||
bool _isPushing { false };
|
bool _isPushing { false };
|
||||||
bool _isBeingPushed { false };
|
bool _isBeingPushed { false };
|
||||||
|
|
|
@ -313,8 +313,8 @@ void setupPreferences() {
|
||||||
getter, setter));
|
getter, setter));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
auto getter = [=]()->bool { return myAvatar->getFlyingEnabled(); };
|
auto getter = [=]()->bool { return myAvatar->getFlyingHMDPref(); };
|
||||||
auto setter = [=](bool value) { myAvatar->setFlyingEnabled(value); };
|
auto setter = [=](bool value) { myAvatar->setFlyingHMDPref(value); };
|
||||||
preferences->addPreference(new CheckPreference(VR_MOVEMENT, "Flying & jumping", getter, setter));
|
preferences->addPreference(new CheckPreference(VR_MOVEMENT, "Flying & jumping", getter, setter));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue