From 3cd0ec3336618235188002ee348d9ff16c0e6aa2 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 5 Jan 2018 13:20:41 -0800 Subject: [PATCH 1/9] default run speed is faster, advanced movement on by default --- interface/src/avatar/MyAvatar.cpp | 2 +- libraries/shared/src/AvatarConstants.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 02a1959a95..5d0625642c 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -94,7 +94,7 @@ MyAvatar::MyAvatar(QThread* thread) : _eyeContactTarget(LEFT_EYE), _realWorldFieldOfView("realWorldFieldOfView", DEFAULT_REAL_WORLD_FIELD_OF_VIEW_DEGREES), - _useAdvancedMovementControls("advancedMovementForHandControllersIsChecked", false), + _useAdvancedMovementControls("advancedMovementForHandControllersIsChecked", true), _smoothOrientationTimer(std::numeric_limits::max()), _smoothOrientationInitial(), _smoothOrientationTarget(), diff --git a/libraries/shared/src/AvatarConstants.h b/libraries/shared/src/AvatarConstants.h index 4942c63e27..bec0355d27 100644 --- a/libraries/shared/src/AvatarConstants.h +++ b/libraries/shared/src/AvatarConstants.h @@ -44,7 +44,7 @@ const glm::quat DEFAULT_AVATAR_LEFTFOOT_ROT { -0.40167322754859924f, 0.915459036 const glm::vec3 DEFAULT_AVATAR_RIGHTFOOT_POS { 0.08f, -0.96f, 0.029f }; const glm::quat DEFAULT_AVATAR_RIGHTFOOT_ROT { -0.4016716778278351f, 0.9154615998268127f, 0.0053307069465518f, 0.023696165531873703f }; -const float DEFAULT_AVATAR_MAX_WALKING_SPEED = 2.6f; // meters / second +const float DEFAULT_AVATAR_MAX_WALKING_SPEED = 4.5f; // meters / second const float DEFAULT_AVATAR_MAX_FLYING_SPEED = 30.0f; // meters / second const float DEFAULT_AVATAR_GRAVITY = -5.0f; // meters / second^2 From f1c03b2d40ab992c2800561e3590fbee076b9b5d Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 8 Jan 2018 12:27:35 -0800 Subject: [PATCH 2/9] adjust RENDER_HEAD_CUTOFF_DISTANCE so that I don't see my head when I run --- interface/src/avatar/MyAvatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 8bb74211da..d86681f618 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1929,7 +1929,7 @@ void MyAvatar::preDisplaySide(RenderArgs* renderArgs) { _prevShouldDrawHead = shouldDrawHead; } -const float RENDER_HEAD_CUTOFF_DISTANCE = 0.3f; +const float RENDER_HEAD_CUTOFF_DISTANCE = 0.47; bool MyAvatar::cameraInsideHead(const glm::vec3& cameraPosition) const { return glm::length(cameraPosition - getHeadPosition()) < (RENDER_HEAD_CUTOFF_DISTANCE * getModelScale()); From ad389e5072efb2be5961bc014f6b99143bb47b16 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 8 Jan 2018 15:27:41 -0800 Subject: [PATCH 3/9] make avatar walk-speed adjustable from js. add a tablet button to control walking vs running --- interface/src/avatar/MyAvatar.cpp | 10 +++++++++- interface/src/avatar/MyAvatar.h | 8 ++++++++ scripts/system/run.js | 28 ++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 scripts/system/run.js diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index de2381342d..601985ff2a 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2100,7 +2100,7 @@ void MyAvatar::updateActionMotor(float deltaTime) { _actionMotorVelocity = motorSpeed * direction; } else { // we're interacting with a floor --> simple horizontal speed and exponential decay - _actionMotorVelocity = getSensorToWorldScale() * DEFAULT_AVATAR_MAX_WALKING_SPEED * direction; + _actionMotorVelocity = getSensorToWorldScale() * _walkSpeed.get() * direction; } float boomChange = getDriveKey(ZOOM); @@ -2692,6 +2692,14 @@ float MyAvatar::getUserEyeHeight() const { return userHeight - userHeight * ratio; } +float MyAvatar::getWalkSpeed() const { + return _walkSpeed.get(); +} + +void MyAvatar::setWalkSpeed(float value) { + _walkSpeed.set(value); +} + glm::vec3 MyAvatar::getPositionForAudio() { switch (_audioListenerMode) { case AudioListenerMode::FROM_HEAD: diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index ab74460d4e..59f7cdb935 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -163,6 +163,8 @@ class MyAvatar : public Avatar { Q_PROPERTY(QUuid SELF_ID READ getSelfID CONSTANT) + Q_PROPERTY(float walkSpeed READ getWalkSpeed WRITE setWalkSpeed); + const QString DOMINANT_LEFT_HAND = "left"; const QString DOMINANT_RIGHT_HAND = "right"; @@ -557,6 +559,9 @@ public: const QUuid& getSelfID() const { return AVATAR_SELF_ID; } + void setWalkSpeed(float value); + float getWalkSpeed() const; + public slots: void increaseSize(); void decreaseSize(); @@ -841,6 +846,9 @@ private: // height of user in sensor space, when standing erect. ThreadSafeValueCache _userHeight { DEFAULT_AVATAR_HEIGHT }; + + // max unscaled forward movement speed + ThreadSafeValueCache _walkSpeed { DEFAULT_AVATAR_MAX_WALKING_SPEED }; }; QScriptValue audioListenModeToScriptValue(QScriptEngine* engine, const AudioListenerMode& audioListenerMode); diff --git a/scripts/system/run.js b/scripts/system/run.js new file mode 100644 index 0000000000..849e67e4ba --- /dev/null +++ b/scripts/system/run.js @@ -0,0 +1,28 @@ +"use strict"; + +/* global Script, Tablet, MyAvatar */ + +(function() { // BEGIN LOCAL_SCOPE + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + var button = tablet.addButton({ + icon: Script.resolvePath("run.svg"), + text: "Run", + sortOrder: 15 + }); + + function onClicked() { + if (MyAvatar.walkSpeed < 4) { + MyAvatar.walkSpeed = 4.5; + } else { + MyAvatar.walkSpeed = 3.0; + } + } + + function cleanup() { + button.clicked.disconnect(onClicked); + tablet.removeButton(button); + } + + + button.clicked.connect(onClicked); +}) From 6626f556520e0e16f2331466aa3b121c24b52cf2 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 8 Jan 2018 15:52:50 -0800 Subject: [PATCH 4/9] fix run script --- scripts/system/run.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/scripts/system/run.js b/scripts/system/run.js index 849e67e4ba..7940be600b 100644 --- a/scripts/system/run.js +++ b/scripts/system/run.js @@ -5,7 +5,7 @@ (function() { // BEGIN LOCAL_SCOPE var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var button = tablet.addButton({ - icon: Script.resolvePath("run.svg"), + icon: Script.resolvePath("assets/images/icon-particles.svg"), text: "Run", sortOrder: 15 }); @@ -23,6 +23,5 @@ tablet.removeButton(button); } - button.clicked.connect(onClicked); -}) +}()); From d0ddbc0092c6f223bff695a0a840a17d059b5c00 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 8 Jan 2018 16:52:07 -0800 Subject: [PATCH 5/9] fix warning --- interface/src/avatar/MyAvatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 601985ff2a..a825c6f3fe 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1929,7 +1929,7 @@ void MyAvatar::preDisplaySide(RenderArgs* renderArgs) { _prevShouldDrawHead = shouldDrawHead; } -const float RENDER_HEAD_CUTOFF_DISTANCE = 0.47; +const float RENDER_HEAD_CUTOFF_DISTANCE = 0.47f; bool MyAvatar::cameraInsideHead(const glm::vec3& cameraPosition) const { return glm::length(cameraPosition - getHeadPosition()) < (RENDER_HEAD_CUTOFF_DISTANCE * getModelScale()); From 72ac1dd216f13a827b82fec20e636cfb29ea1b70 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Tue, 9 Jan 2018 08:50:20 -0800 Subject: [PATCH 6/9] walk by default, put old walk speed back --- libraries/shared/src/AvatarConstants.h | 2 +- scripts/system/run.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/shared/src/AvatarConstants.h b/libraries/shared/src/AvatarConstants.h index bec0355d27..4942c63e27 100644 --- a/libraries/shared/src/AvatarConstants.h +++ b/libraries/shared/src/AvatarConstants.h @@ -44,7 +44,7 @@ const glm::quat DEFAULT_AVATAR_LEFTFOOT_ROT { -0.40167322754859924f, 0.915459036 const glm::vec3 DEFAULT_AVATAR_RIGHTFOOT_POS { 0.08f, -0.96f, 0.029f }; const glm::quat DEFAULT_AVATAR_RIGHTFOOT_ROT { -0.4016716778278351f, 0.9154615998268127f, 0.0053307069465518f, 0.023696165531873703f }; -const float DEFAULT_AVATAR_MAX_WALKING_SPEED = 4.5f; // meters / second +const float DEFAULT_AVATAR_MAX_WALKING_SPEED = 2.6f; // meters / second const float DEFAULT_AVATAR_MAX_FLYING_SPEED = 30.0f; // meters / second const float DEFAULT_AVATAR_GRAVITY = -5.0f; // meters / second^2 diff --git a/scripts/system/run.js b/scripts/system/run.js index 7940be600b..edd6e20021 100644 --- a/scripts/system/run.js +++ b/scripts/system/run.js @@ -14,7 +14,7 @@ if (MyAvatar.walkSpeed < 4) { MyAvatar.walkSpeed = 4.5; } else { - MyAvatar.walkSpeed = 3.0; + MyAvatar.walkSpeed = 2.6; } } From 508a3b37cd87cefe0fa4a8a0e7603ef8576b5403 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 12 Jan 2018 15:28:42 -0800 Subject: [PATCH 7/9] fix icon. button lights up when run in enabled --- scripts/system/assets/images/run.svg | 1 + scripts/system/run.js | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 scripts/system/assets/images/run.svg diff --git a/scripts/system/assets/images/run.svg b/scripts/system/assets/images/run.svg new file mode 100644 index 0000000000..0957166346 --- /dev/null +++ b/scripts/system/assets/images/run.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/system/run.js b/scripts/system/run.js index edd6e20021..054cca6d9c 100644 --- a/scripts/system/run.js +++ b/scripts/system/run.js @@ -3,18 +3,24 @@ /* global Script, Tablet, MyAvatar */ (function() { // BEGIN LOCAL_SCOPE + var WALK_SPEED = 2.6; + var RUN_SPEED = 4.5; + var MIDDLE_SPEED = (WALK_SPEED + RUN_SPEED) / 2.0; + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var button = tablet.addButton({ - icon: Script.resolvePath("assets/images/icon-particles.svg"), - text: "Run", + icon: Script.resolvePath("assets/images/run.svg"), + text: "RUN", sortOrder: 15 }); function onClicked() { - if (MyAvatar.walkSpeed < 4) { - MyAvatar.walkSpeed = 4.5; + if (MyAvatar.walkSpeed < MIDDLE_SPEED) { + button.editProperties({isActive: true}); + MyAvatar.walkSpeed = RUN_SPEED; } else { - MyAvatar.walkSpeed = 2.6; + button.editProperties({isActive: false}); + MyAvatar.walkSpeed = WALK_SPEED; } } @@ -24,4 +30,10 @@ } button.clicked.connect(onClicked); + if (MyAvatar.walkSpeed < MIDDLE_SPEED) { + button.editProperties({isActive: false}); + } else { + button.editProperties({isActive: true}); + } + }()); From f6ce25405929a68acc8c5f3b550e94128350cdf3 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 12 Jan 2018 15:30:44 -0800 Subject: [PATCH 8/9] put run.js back in defaultScripts --- scripts/defaultScripts.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 71755e3abb..f934bfef53 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -30,7 +30,8 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/dialTone.js", "system/firstPersonHMD.js", "system/tablet-ui/tabletUI.js", - "system/emote.js" + "system/emote.js", + "system/run.js" ]; var DEFAULT_SCRIPTS_SEPARATE = [ "system/controllers/controllerScripts.js" From d3084dc0df71a91065683747a89944710f358812 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Wed, 17 Jan 2018 07:11:27 -0800 Subject: [PATCH 9/9] defang --- interface/src/avatar/MyAvatar.cpp | 2 +- scripts/defaultScripts.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index d6069f711f..f97b0031da 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -94,7 +94,7 @@ MyAvatar::MyAvatar(QThread* thread) : _eyeContactTarget(LEFT_EYE), _realWorldFieldOfView("realWorldFieldOfView", DEFAULT_REAL_WORLD_FIELD_OF_VIEW_DEGREES), - _useAdvancedMovementControls("advancedMovementForHandControllersIsChecked", true), + _useAdvancedMovementControls("advancedMovementForHandControllersIsChecked", false), _smoothOrientationTimer(std::numeric_limits::max()), _smoothOrientationInitial(), _smoothOrientationTarget(), diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index f934bfef53..71755e3abb 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -30,8 +30,7 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/dialTone.js", "system/firstPersonHMD.js", "system/tablet-ui/tabletUI.js", - "system/emote.js", - "system/run.js" + "system/emote.js" ]; var DEFAULT_SCRIPTS_SEPARATE = [ "system/controllers/controllerScripts.js"