diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index ad39b6663a..b91217da63 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -4947,35 +4947,55 @@ void MyAvatar::setWalkSpeed(float value) { } void MyAvatar::setWalkBackwardSpeed(float value) { + bool changed = true; + float prevVal; switch (_controlSchemeIndex) { case LocomotionControlsMode::CONTROLS_DEFAULT: + prevVal = _defaultWalkBackwardSpeed.get(); _defaultWalkBackwardSpeed.set(value); break; case LocomotionControlsMode::CONTROLS_ANALOG: + prevVal = _analogWalkBackwardSpeed.get(); _analogWalkBackwardSpeed.set(value); break; case LocomotionControlsMode::CONTROLS_ANALOG_PLUS: + prevVal = _analogPlusWalkBackwardSpeed.get(); _analogPlusWalkBackwardSpeed.set(value); break; default: + changed = false; break; } + + if (changed && prevVal != value) { + emit walkBackwardSpeedChanged(value); + } } void MyAvatar::setSprintSpeed(float value) { + bool changed = true; + float prevVal; switch (_controlSchemeIndex) { case LocomotionControlsMode::CONTROLS_DEFAULT: + prevVal = _defaultSprintSpeed.get(); _defaultSprintSpeed.set(value); break; case LocomotionControlsMode::CONTROLS_ANALOG: + prevVal = _analogSprintSpeed.get(); _analogSprintSpeed.set(value); break; case LocomotionControlsMode::CONTROLS_ANALOG_PLUS: + prevVal = _analogPlusSprintSpeed.get(); _analogPlusSprintSpeed.set(value); break; default: + changed = false; break; } + + if (changed && prevVal != value) { + emit analogPlusSprintSpeedChanged(value); + } } float MyAvatar::getSprintSpeed() const { @@ -5013,9 +5033,12 @@ float MyAvatar::getAnalogSprintSpeed() const { } void MyAvatar::setAnalogPlusWalkSpeed(float value) { - _analogPlusWalkSpeed.set(value); - // Sprint speed for Analog Plus should be double walk speed. - _analogPlusSprintSpeed.set(value * 2.0f); + if (_analogPlusWalkSpeed.get() != value) { + _analogPlusWalkSpeed.set(value); + emit analogPlusWalkSpeedChanged(value); + // Sprint speed for Analog Plus should be double walk speed. + _analogPlusSprintSpeed.set(value * 2.0f); + } } float MyAvatar::getAnalogPlusWalkSpeed() const { @@ -5023,7 +5046,10 @@ float MyAvatar::getAnalogPlusWalkSpeed() const { } void MyAvatar::setAnalogPlusSprintSpeed(float value) { - _analogPlusSprintSpeed.set(value); + if (_analogPlusSprintSpeed.get() != value) { + _analogPlusSprintSpeed.set(value); + emit analogPlusSprintSpeedChanged(value); + } } float MyAvatar::getAnalogPlusSprintSpeed() const { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 9fb6c85a78..e87aa87bd1 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -370,10 +370,10 @@ class MyAvatar : public Avatar { Q_PROPERTY(QUuid SELF_ID READ getSelfID CONSTANT) Q_PROPERTY(float walkSpeed READ getWalkSpeed WRITE setWalkSpeed); - Q_PROPERTY(float analogPlusWalkSpeed READ getAnalogPlusWalkSpeed WRITE setAnalogPlusWalkSpeed); - Q_PROPERTY(float analogPlusSprintSpeed READ getAnalogPlusSprintSpeed WRITE setAnalogPlusSprintSpeed); - Q_PROPERTY(float walkBackwardSpeed READ getWalkBackwardSpeed WRITE setWalkBackwardSpeed); - Q_PROPERTY(float sprintSpeed READ getSprintSpeed WRITE setSprintSpeed); + Q_PROPERTY(float analogPlusWalkSpeed READ getAnalogPlusWalkSpeed WRITE setAnalogPlusWalkSpeed NOTIFY analogPlusWalkSpeedChanged); + Q_PROPERTY(float analogPlusSprintSpeed READ getAnalogPlusSprintSpeed WRITE setAnalogPlusSprintSpeed NOTIFY analogPlusSprintSpeedChanged); + Q_PROPERTY(float walkBackwardSpeed READ getWalkBackwardSpeed WRITE setWalkBackwardSpeed NOTIFY walkBackwardSpeedChanged); + Q_PROPERTY(float sprintSpeed READ getSprintSpeed WRITE setSprintSpeed NOTIFY sprintSpeedChanged); Q_PROPERTY(bool isInSittingState READ getIsInSittingState WRITE setIsInSittingState); Q_PROPERTY(MyAvatar::SitStandModelType userRecenterModel READ getUserRecenterModel WRITE setUserRecenterModel); Q_PROPERTY(bool isSitStandStateLocked READ getIsSitStandStateLocked WRITE setIsSitStandStateLocked); @@ -2161,6 +2161,38 @@ signals: */ void audioListenerModeChanged(); + /**jsdoc + * Notifies when the analogPlusWalkSpeed value is changed. + * @function MyAvatar.analogPlusWalkSpeedChanged + * @param {float} value - the new avatar walk speed + * @returns {Signal} + */ + void analogPlusWalkSpeedChanged(float value); + + /**jsdoc + * Notifies when the analogPlusSprintSpeed value is changed. + * @function MyAvatar.analogPlusSprintSpeedChanged + * @param {float} value - the new avatar sprint speed + * @returns {Signal} + */ + void analogPlusSprintSpeedChanged(float value); + + /**jsdoc + * Notifies when the sprintSpeed value is changed. + * @function MyAvatar.sprintSpeedChanged + * @param {float} value - the new avatar sprint speed + * @returns {Signal} + */ + void sprintSpeedChanged(float value); + + /**jsdoc + * Notifies when the walkBackwardSpeed value is changed. + * @function MyAvatar.walkBackwardSpeedChanged + * @param {float} value - the new avatar walk backward speed + * @returns {Signal} + */ + void walkBackwardSpeedChanged(float value); + /**jsdoc * @function MyAvatar.transformChanged * @returns {Signal} diff --git a/interface/src/scripting/AudioDevices.h b/interface/src/scripting/AudioDevices.h index 3d12f93113..2ea034d9fe 100644 --- a/interface/src/scripting/AudioDevices.h +++ b/interface/src/scripting/AudioDevices.h @@ -80,7 +80,7 @@ public: class AudioInputDeviceList : public AudioDeviceList { Q_OBJECT - Q_PROPERTY(bool peakValuesAvailable READ peakValuesAvailable) + Q_PROPERTY(bool peakValuesAvailable READ peakValuesAvailable CONSTANT) Q_PROPERTY(bool peakValuesEnabled READ peakValuesEnabled WRITE setPeakValuesEnabled NOTIFY peakValuesEnabledChanged) public: diff --git a/libraries/shared/src/shared/Camera.h b/libraries/shared/src/shared/Camera.h index f41183479c..0df83cfb9a 100644 --- a/libraries/shared/src/shared/Camera.h +++ b/libraries/shared/src/shared/Camera.h @@ -38,7 +38,7 @@ class Camera : public QObject { Q_PROPERTY(glm::vec3 position READ getPosition WRITE setPosition) Q_PROPERTY(glm::quat orientation READ getOrientation WRITE setOrientation) - Q_PROPERTY(QString mode READ getModeString WRITE setModeString) + Q_PROPERTY(QString mode READ getModeString WRITE setModeString NOTIFY modeUpdated) Q_PROPERTY(QVariantMap frustum READ getViewFrustum CONSTANT) public: