diff --git a/assignment-client/src/AssignmentClient.cpp b/assignment-client/src/AssignmentClient.cpp
index a1a2b7c1b5..ce724d7368 100644
--- a/assignment-client/src/AssignmentClient.cpp
+++ b/assignment-client/src/AssignmentClient.cpp
@@ -82,6 +82,9 @@ AssignmentClient::AssignmentClient(Assignment::Type requestAssignmentType, QStri
}
_assignmentServerSocket = HifiSockAddr(_assignmentServerHostname, assignmentServerPort, true);
+ if (_assignmentServerSocket.isNull()) {
+ qCCritical(assignment_client) << "PAGE: Couldn't resolve domain server address" << _assignmentServerHostname;
+ }
_assignmentServerSocket.setObjectName("AssignmentServer");
nodeList->setAssignmentServerSocket(_assignmentServerSocket);
@@ -183,16 +186,21 @@ void AssignmentClient::sendAssignmentRequest() {
// we want to check again for the local domain-server port in case the DS has restarted
quint16 localAssignmentServerPort;
if (nodeList->getLocalServerPortFromSharedMemory(DOMAIN_SERVER_LOCAL_PORT_SMEM_KEY, localAssignmentServerPort)) {
- if (localAssignmentServerPort != _assignmentServerSocket.getPort()) {
- qCDebug(assignment_client) << "Port for local assignment server read from shared memory is"
- << localAssignmentServerPort;
+ if (localAssignmentServerPort == 0) {
+ qCWarning(assignment_client) << "ALERT: Server port from shared memory is 0";
+ } else {
+ if (localAssignmentServerPort != _assignmentServerSocket.getPort()) {
+ qCDebug(assignment_client) << "Port for local assignment server read from shared memory is"
+ << localAssignmentServerPort;
- _assignmentServerSocket.setPort(localAssignmentServerPort);
- nodeList->setAssignmentServerSocket(_assignmentServerSocket);
+ _assignmentServerSocket.setPort(localAssignmentServerPort);
+ nodeList->setAssignmentServerSocket(_assignmentServerSocket);
+ }
}
} else {
- qCWarning(assignment_client) << "Failed to read local assignment server port from shared memory"
- << "- will send assignment request to previous assignment server socket.";
+ qCWarning(assignment_client) << "ALERT: Failed to read local assignment server port from shared memory ("
+ << DOMAIN_SERVER_LOCAL_PORT_SMEM_KEY
+ << ")- will send assignment request to previous assignment server socket.";
}
}
@@ -250,7 +258,7 @@ void AssignmentClient::handleCreateAssignmentPacket(QSharedPointerstarted()
workerThread->start();
} else {
- qCWarning(assignment_client) << "Received an assignment that could not be unpacked. Re-requesting.";
+ qCWarning(assignment_client) << "ALERT: Received an assignment that could not be unpacked. Re-requesting.";
}
}
diff --git a/assignment-client/src/AssignmentFactory.cpp b/assignment-client/src/AssignmentFactory.cpp
index 405039d833..ceab285763 100644
--- a/assignment-client/src/AssignmentFactory.cpp
+++ b/assignment-client/src/AssignmentFactory.cpp
@@ -24,7 +24,9 @@
ThreadedAssignment* AssignmentFactory::unpackAssignment(ReceivedMessage& message) {
quint8 packedType;
- message.peekPrimitive(&packedType);
+ if (message.peekPrimitive(&packedType) != sizeof(packedType)) {
+ return nullptr;
+ }
Assignment::Type unpackedType = (Assignment::Type) packedType;
diff --git a/cmake/ports/webrtc/portfile.cmake b/cmake/ports/webrtc/portfile.cmake
index 3f2fb7a6ab..b5b46723bd 100644
--- a/cmake/ports/webrtc/portfile.cmake
+++ b/cmake/ports/webrtc/portfile.cmake
@@ -14,9 +14,9 @@ elseif (WIN32)
elseif (APPLE)
vcpkg_download_distfile(
WEBRTC_SOURCE_ARCHIVE
- URLS https://hifi-public.s3.amazonaws.com/seth/webrtc-20190626-osx.tar.gz
- SHA512 fc70cec1b5ee87395137b7090f424e2fc2300fc17d744d5ffa1cf7aa0e0f1a069a9d72ba1ad2fb4a640ebeb6c218bda24351ba0083e1ff96c4a4b5032648a9d2
- FILENAME webrtc-20190626-osx.tar.gz
+ URLS https://hifi-public.s3.amazonaws.com/seth/webrtc-m78-osx.tar.gz
+ SHA512 8b547da921cc96f5c22b4253a1c9e707971bb627898fbdb6b238ef1318c7d2512e878344885c936d4bd6a66005cc5b63dfc3fa5ddd14f17f378dcaa17b5e25df
+ FILENAME webrtc-m78-osx.tar.gz
)
else ()
# else Linux desktop
diff --git a/interface/src/FancyCamera.h b/interface/src/FancyCamera.h
index 0cfe147138..f7be71e053 100644
--- a/interface/src/FancyCamera.h
+++ b/interface/src/FancyCamera.h
@@ -20,7 +20,7 @@ class FancyCamera : public Camera {
/**jsdoc
* The Camera
API provides access to the "camera" that defines your view in desktop and HMD display modes.
- * The High Fidelity camera has axes x
= right, y
= up, -z = forward.
+ * The High Fidelity camera has axes x
= right, y
= up, -z
= forward.
*
* @namespace Camera
*
diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp
index 89fec3c812..b66bc9c1c4 100644
--- a/interface/src/Menu.cpp
+++ b/interface/src/Menu.cpp
@@ -829,7 +829,7 @@ Menu::Menu() {
// Help > Release Notes
action = addActionToQMenuAndActionHash(helpMenu, "Release Notes");
connect(action, &QAction::triggered, qApp, [] {
- QDesktopServices::openUrl(QUrl("http://steamcommunity.com/games/390540/announcements/"));
+ QDesktopServices::openUrl(QUrl("https://docs.highfidelity.com/release-notes.html"));
});
// Help > Report a Bug!
diff --git a/interface/src/SpeechRecognizer.h b/interface/src/SpeechRecognizer.h
index 7e2acdb8ac..ae35f63a35 100644
--- a/interface/src/SpeechRecognizer.h
+++ b/interface/src/SpeechRecognizer.h
@@ -23,6 +23,10 @@
#include
/**jsdoc
+ * The SpeechRecognizer
API provides facilities to recognize voice commands.
+ * Speech recognition is enabled or disabled via the Developer > Scripting > Enable Speech Control API menu item or
+ * the {@link SpeechRecognizer.setEnabled} method.
+ *
* @namespace SpeechRecognizer
*
* @hifi-interface
@@ -40,36 +44,86 @@ public:
public slots:
/**jsdoc
+ * Enables or disables speech recognition.
* @function SpeechRecognizer.setEnabled
- * @param {boolean} enabled
+ * @param {boolean} enabled - true
to enable speech recognition, false
to disable.
*/
void setEnabled(bool enabled);
/**jsdoc
+ * Adds a voice command to the speech recognizer.
* @function SpeechRecognizer.addCommand
- * @param {string} command
+ * @param {string} command - The voice command to recognize.
*/
void addCommand(const QString& command);
/**jsdoc
+ * Removes a voice command from the speech recognizer.
* @function SpeechRecognizer.removeCommand
- * @param {string} command
+ * @param {string} command - The voice command to stop recognizing.
*/
void removeCommand(const QString& command);
signals:
/**jsdoc
+ * Triggered when a voice command has been recognized.
* @function SpeechRecognizer.commandRecognized
- * @param {string} command
+ * @param {string} command - The voice command recognized.
* @returns {Signal}
+ * @example Turn your avatar upon voice command.
+ * var TURN_LEFT = "turn left";
+ * var TURN_RIGHT = "turn right";
+ * var TURN_RATE = 0.5;
+ * var TURN_DURATION = 1000; // ms
+ * var turnRate = 0;
+ *
+ * function getTurnRate() {
+ * return turnRate;
+ * }
+ *
+ * var MAPPING_NAME = "com.highfidelity.controllers.example.speechRecognizer";
+ * var mapping = Controller.newMapping(MAPPING_NAME);
+ *
+ * mapping.from(getTurnRate).to(Controller.Actions.Yaw);
+ * Controller.enableMapping(MAPPING_NAME);
+ *
+ * function onCommandRecognized(command) {
+ * print("Speech command: " + command);
+ * switch (command) {
+ * case TURN_LEFT:
+ * turnRate = -TURN_RATE;
+ * break;
+ * case TURN_RIGHT:
+ * turnRate = TURN_RATE;
+ * break;
+ * }
+ * Script.setTimeout(function () {
+ * turnRate = 0;
+ * }, TURN_DURATION);
+ * }
+ *
+ * SpeechRecognizer.addCommand(TURN_LEFT);
+ * SpeechRecognizer.addCommand(TURN_RIGHT);
+ * SpeechRecognizer.commandRecognized.connect(onCommandRecognized);
+ *
+ * Script.scriptEnding.connect(function () {
+ * Controller.disableMapping(MAPPING_NAME);
+ * SpeechRecognizer.removeCommand(TURN_LEFT);
+ * SpeechRecognizer.removeCommand(TURN_RIGHT);
+ * });
*/
void commandRecognized(const QString& command);
/**jsdoc
+ * Triggered when speech recognition is enabled or disabled.
* @function SpeechRecognizer.enabledUpdated
- * @param {boolean} enabled
+ * @param {boolean} enabled - true
if speech recognition is enabled, false
if it is disabled.
* @returns {Signal}
+ * @example Report when speech recognition is enabled or disabled.
+ * SpeechRecognizer.enabledUpdated.connect(function (enabled) {
+ * print("Speech recognition: " + (enabled ? "enabled" : "disabled"));
+ * });
*/
void enabledUpdated(bool enabled);
diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp
index a7fd397915..970544287e 100644
--- a/interface/src/avatar/MyAvatar.cpp
+++ b/interface/src/avatar/MyAvatar.cpp
@@ -2553,7 +2553,7 @@ void MyAvatar::clearWornAvatarEntities() {
}
/**jsdoc
- * Information about an avatar entity.
+ * Information about an avatar entity.
*
*
* Property | Type | Description |
@@ -3560,7 +3560,7 @@ void MyAvatar::updateOrientation(float deltaTime) {
if (faceForward || _shouldTurnToFaceCamera) {
const float REORIENT_FORWARD_BLEND = 0.25f;
const float REORIENT_TURN_BLEND = 0.03f;
- const float DIAGONAL_TURN_BLEND = 0.02f;
+ const float DIAGONAL_TURN_BLEND = 0.1f;
float blend = (_shouldTurnToFaceCamera ? REORIENT_TURN_BLEND : REORIENT_FORWARD_BLEND) * timeScale;
if (blend > 1.0f) {
blend = 1.0f;
@@ -3772,7 +3772,8 @@ glm::vec3 MyAvatar::scaleMotorSpeed(const glm::vec3 forward, const glm::vec3 rig
// Desktop mode.
direction = (zSpeed * forward) + (xSpeed * right);
CameraMode mode = qApp->getCamera().getMode();
- if ((mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_FIRST_PERSON || mode == CAMERA_MODE_SELFIE) && zSpeed != 0.0f && xSpeed != 0.0f){
+ if ((mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_FIRST_PERSON || mode == CAMERA_MODE_SELFIE) &&
+ zSpeed != 0.0f && xSpeed != 0.0f && !isFlying()){
direction = (zSpeed * forward);
}
diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h
index a7ba639461..0f139ddbff 100644
--- a/interface/src/avatar/MyAvatar.h
+++ b/interface/src/avatar/MyAvatar.h
@@ -170,10 +170,12 @@ class MyAvatar : public Avatar {
* collision. It can be a mono or stereo 16-bit WAV file running at either 24kHz or 48kHz. The latter is down-sampled
* by the audio mixer, so all audio effectively plays back at a 24khz. 48kHz RAW files are also supported.
* @property {number} audioListenerMode=0 - Specifies the listening position when hearing spatialized audio. Must be one
- * of the following property values:
- * Myavatar.audioListenerModeHead
- * Myavatar.audioListenerModeCamera
- * Myavatar.audioListenerModeCustom
+ * of the following property values:
+ *
+ * MyAvatar.audioListenerModeHead
+ * MyAvatar.audioListenerModeCamera
+ * MyAvatar.audioListenerModeCustom
+ *
* @property {number} audioListenerModeHead=0 - The audio listening position is at the avatar's head. Read-only.
* @property {number} audioListenerModeCamera=1 - The audio listening position is at the camera. Read-only.
* @property {number} audioListenerModeCustom=2 - The audio listening position is at a the position specified by set by the
@@ -182,8 +184,8 @@ class MyAvatar : public Avatar {
* property value is audioListenerModeCustom
.
* @property {Quat} customListenOrientation=Quat.IDENTITY - The listening orientation used when the
* audioListenerMode
property value is audioListenerModeCustom
.
- * @property {boolean} hasScriptedBlendshapes=false - true
to transmit blendshapes over the network.
- * Note: Currently doesn't work. Use {@link MyAvatar.setForceFaceTrackerConnected} instead.
+ * @property {boolean} hasScriptedBlendshapes=false - true
to transmit blendshapes over the network.
+ * Note: Currently doesn't work. Use {@link MyAvatar.setForceFaceTrackerConnected} instead.
* @property {boolean} hasProceduralBlinkFaceMovement=true - true
if procedural blinking is turned on.
* @property {boolean} hasProceduralEyeFaceMovement=true - true
if procedural eye movement is turned on.
* @property {boolean} hasAudioEnabledFaceMovement=true - true
to move the mouth blendshapes with voice audio
@@ -241,8 +243,8 @@ class MyAvatar : public Avatar {
* @property {boolean} useAdvancedMovementControls - Returns and sets the value of the Interface setting, Settings >
* Controls > Walking. Note: Setting the value has no effect unless Interface is restarted.
* @property {boolean} showPlayArea - Returns and sets the value of the Interface setting, Settings > Controls > Show room
- * boundaries while teleporting.
- * Note: Setting the value has no effect unless Interface is restarted.
+ * boundaries while teleporting.
+ * Note: Setting the value has no effect unless Interface is restarted.
*
* @property {number} yawSpeed=75 - The mouse X sensitivity value in Settings > General. Read-only.
* @property {number} pitchSpeed=50 - The mouse Y sensitivity value in Settings > General. Read-only.
@@ -491,9 +493,10 @@ public:
* 2 | Auto | Interface detects when the user is standing or seated in the real world.
* Avatar leaning is disabled when the user is sitting (i.e., avatar always recenters), and avatar leaning is enabled
* when the user is standing (i.e., avatar leans, then if leans too far it recenters). |
- * 3 | DisableHMDLean | Both avatar leaning and recentering are disabled regardless of
+ * |
3 | DisableHMDLean | Both avatar leaning and recentering are disabled regardless of
* what the user is doing in the real world and no matter what their avatar is doing in the virtual world. Enables
- * the avatar to sit on the floor when the user sits on the floor. Note: Experimental. |
+ * the avatar to sit on the floor when the user sits on the floor.
+ * Note: Experimental.
*
*
* @typedef {number} MyAvatar.SitStandModelType
@@ -782,7 +785,7 @@ public:
* additional properties specified when adding the different handlers.
* A handler may change a value from animStateDictionaryIn
or add different values in the
* animStateDictionaryOut
returned. Any property values set in animStateDictionaryOut
will
- * override those of the internal animation machinery.
* @function MyAvatar.addAnimationStateHandler
* @param {function} handler - The animation state handler function to add.
* @param {Array|null} propertiesList - The list of {@link MyAvatar.AnimStateDictionary|AnimStateDictionary}
diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp
index ddc1fe376c..3a7b67a8e9 100644
--- a/interface/src/raypick/PickScriptingInterface.cpp
+++ b/interface/src/raypick/PickScriptingInterface.cpp
@@ -78,17 +78,17 @@ PickFilter getPickFilter(unsigned int filter) {
* @property {boolean} [enabled=false] - true
if this pick should start enabled, false
if it should
* start disabled. Disabled picks do not update their pick results.
* @property {FilterFlags} [filter=0] - The filter for this pick to use. Construct using {@link Picks} FilterFlags property
- * values (e.g., Picks.PICK_DOMAIN_ENTTITIES
) combined with |
(bitwise OR) operators.
+ * values (e.g., Picks.PICK_DOMAIN_ENTITIES
) combined with |
(bitwise OR) operators.
* @property {number} [maxDistance=0.0] - The maximum distance at which this pick will intersect. A value of 0.0
* means no maximum.
* @property {Uuid} [parentID] - The ID of the parent: an avatar, an entity, or another pick.
* @property {number} [parentJointIndex=0] - The joint of the parent to parent to, for example, an avatar joint.
- * A value of 0
means no joint.
- * Used only if parentID
is specified.
+ * A value of 0
means no joint.
+ * Used only if parentID
is specified.
* @property {string} [joint] - "Mouse"
parents the pick to the mouse; "Avatar"
parents the pick to
* the user's avatar head; a joint name parents to the joint in the user's avatar; otherwise, the pick is "static", not
- * parented to anything.
- * Used only if parentID
is not specified.
+ * parented to anything.
+ * Used only if parentID
is not specified.
* @property {Vec3} [position=Vec3.ZERO] - The offset of the ray origin from its parent if parented, otherwise the ray origin
* in world coordinates.
* @property {Vec3} [posOffset] - Synonym for position
.
@@ -164,7 +164,7 @@ std::shared_ptr PickScriptingInterface::buildRayPick(const QVariantMa
* @property {boolean} [enabled=false] - true
if this pick should start enabled, false
if it should
* start disabled. Disabled picks do not update their pick results.
* @property {number} [filter=0] - The filter for this pick to use. Construct using {@link Picks} FilterFlags property
- * values (e.g., Picks.PICK_DOMAIN_ENTTITIES
) combined with |
(bitwise OR) operators.
+ * values (e.g., Picks.PICK_DOMAIN_ENTITIES
) combined with |
(bitwise OR) operators.
* Note: Stylus picks do not intersect avatars or the HUD.
* @property {number} [maxDistance=0.0] - The maximum distance at which this pick will intersect. A value of 0.0
* means no maximum.
@@ -212,17 +212,17 @@ std::shared_ptr PickScriptingInterface::buildStylusPick(const QVarian
* @property {boolean} [enabled=false] - true
if this pick should start enabled, false
if it should
* start disabled. Disabled picks do not update their pick results.
* @property {number} [filter=0] - The filter for this pick to use. Construct using {@link Picks} FilterFlags property
- * values (e.g., Picks.PICK_DOMAIN_ENTTITIES
) combined with |
(bitwise OR) operators.
+ * values (e.g., Picks.PICK_DOMAIN_ENTITIES
) combined with |
(bitwise OR) operators.
* @property {number} [maxDistance=0.0] - The maximum distance at which this pick will intersect. A value of 0.0
* means no maximum.
* @property {Uuid} [parentID] - The ID of the parent: an avatar, an entity, or another pick.
* @property {number} [parentJointIndex=0] - The joint of the parent to parent to, for example, an avatar joint.
- * A value of 0
means no joint.
- * Used only if parentID
is specified.
+ * A value of 0
means no joint.
+ * Used only if parentID
is specified.
* @property {string} [joint] - "Mouse"
parents the pick to the mouse; "Avatar"
parents the pick to
* the user's avatar head; a joint name parents to the joint in the user's avatar; otherwise, the pick is "static", not
* parented to anything.
- * Used only if parentID
is not specified.
+ * Used only if parentID
is not specified.
* @property {Vec3} [position=Vec3.ZERO] - The offset of the parabola origin from its parent if parented, otherwise the
* parabola origin in world coordinates.
* @property {Vec3} [posOffset] - Synonym for position
.
@@ -321,18 +321,18 @@ std::shared_ptr PickScriptingInterface::buildParabolaPick(const QVari
* @property {boolean} [enabled=false] - true
if this pick should start enabled, false
if it should
* start disabled. Disabled picks do not update their pick results.
* @property {FilterFlags} [filter=0] - The filter for this pick to use. Construct using {@link Picks} FilterFlags property
- * values (e.g., Picks.PICK_DOMAIN_ENTTITIES
) combined with |
(bitwise OR) operators.
+ * values (e.g., Picks.PICK_DOMAIN_ENTITIES
) combined with |
(bitwise OR) operators.
* Note: Collision picks do not intersect the HUD.
* @property {number} [maxDistance=0.0] - The maximum distance at which this pick will intersect. A value of 0.0
* means no maximum.
* @property {Uuid} [parentID] - The ID of the parent: an avatar, an entity, or another pick.
* @property {number} [parentJointIndex=0] - The joint of the parent to parent to, for example, an avatar joint.
- * A value of 0
means no joint.
- * Used only if parentID
is specified.
+ * A value of 0
means no joint.
+ * Used only if parentID
is specified.
* @property {string} [joint] - "Mouse"
parents the pick to the mouse; "Avatar"
parents the pick to
* the user's avatar head; a joint name parents to the joint in the user's avatar; otherwise, the pick is "static", not
- * parented to anything.
- * Used only if parentID
is not specified.
+ * parented to anything.
+ * Used only if parentID
is not specified.
* @property {boolean} [scaleWithParent=true] - true
to scale the pick's dimensions and threshold according to the
* scale of the parent.
*
@@ -344,9 +344,11 @@ std::shared_ptr PickScriptingInterface::buildParabolaPick(const QVari
* the collision region. The depth is in world coordinates but scales with the parent if defined.
* @property {CollisionMask} [collisionGroup=8] - The type of objects the collision region collides as. Objects whose collision
* masks overlap with the region's collision group are considered to be colliding with the region.
- * @property {PickType} pickType - The type of pick when getting these properties from {@link Picks.getPickProperties} or {@link Picks.getPickScriptParameters}. A collision pick's type is {@link PickType.Collision}.
- * @property {Vec3} baseScale - Returned from {@link Picks.getPickProperties} when the pick has a parent with varying scale (usually an avatar or an entity).
- * Its value is the original scale of the parent at the moment the pick was created, and is used to rescale the pick, and/or the pointer which owns this pick, if any.
+ * @property {PickType} pickType - The type of pick when getting these properties from {@link Picks.getPickProperties} or
+ * {@link Picks.getPickScriptParameters}. A collision pick's type is {@link PickType.Collision}.
+ * @property {Vec3} baseScale - Returned from {@link Picks.getPickProperties} when the pick has a parent with varying scale
+ * (usually an avatar or an entity). Its value is the original scale of the parent at the moment the pick was created, and
+ * is used to rescale the pick, and/or the pointer which owns this pick, if any.
*/
std::shared_ptr PickScriptingInterface::buildCollisionPick(const QVariantMap& propMap) {
bool enabled = false;
diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h
index 72b28bbc47..e26b91b9a2 100644
--- a/interface/src/raypick/PickScriptingInterface.h
+++ b/interface/src/raypick/PickScriptingInterface.h
@@ -287,7 +287,7 @@ public slots:
/**jsdoc
* @function Picks.PICK_ENTITIES
* @deprecated This function is deprecated and will be removed. Use the Picks.PICK_DOMAIN_ENTITIES |
- * Picks.PICK_AVATAR_ENTITIES properties expression instead.
+ * Picks.PICK_AVATAR_ENTITIES
properties expression instead.
* @returns {number}
*/
static constexpr unsigned int PICK_ENTITIES() { return PickFilter::getBitMask(PickFilter::FlagBit::DOMAIN_ENTITIES) | PickFilter::getBitMask(PickFilter::FlagBit::AVATAR_ENTITIES); }
diff --git a/interface/src/raypick/PointerScriptingInterface.h b/interface/src/raypick/PointerScriptingInterface.h
index 0eed8b4741..2d2f3f6dae 100644
--- a/interface/src/raypick/PointerScriptingInterface.h
+++ b/interface/src/raypick/PointerScriptingInterface.h
@@ -41,7 +41,7 @@ public:
* @property {Controller.Standard|Controller.Actions|function} action - The controller output or function that triggers the
* events on the entity or overlay. If a function, it must return a number >= 1.0
to start the action
* and < 1.0
to terminate the action.
- * @property {string} button - Which button to trigger.
+ * @property {string} button - Which button to trigger:
*
* "Primary"
, "Secondary"
, and "Tertiary"
cause {@link Entities} and
* {@link Overlays} mouse pointer events. Other button names also cause mouse events but the button
diff --git a/interface/src/scripting/AccountServicesScriptingInterface.h b/interface/src/scripting/AccountServicesScriptingInterface.h
index b188b4e63b..3ad637d0e6 100644
--- a/interface/src/scripting/AccountServicesScriptingInterface.h
+++ b/interface/src/scripting/AccountServicesScriptingInterface.h
@@ -50,12 +50,14 @@ class AccountServicesScriptingInterface : public QObject {
* "Unknown user"
. Read-only.
* @property {boolean} loggedIn - true
if the user is logged in, otherwise false
.
* Read-only.
- * @property {string} findableBy - The user's visibility to other users:
- * "none"
- user appears offline.
- * "friends"
- user is visible only to friends.
- * "connections"
- user is visible to friends and connections.
- * "all"
- user is visible to everyone.
- * @property {string} metaverseServerURL - The metaverse server that the user is authenticated against when logged in
+ * @property {string} findableBy - The user's visibility to other users:
+ *
+ * "none"
— user appears offline.
+ * "friends"
— user is visible only to friends.
+ * "connections"
— user is visible to friends and connections.
+ * "all"
— user is visible to everyone.
+ *
+ * @property {string} metaverseServerURL - The metaverse server that the user is authenticated against when logged in
* — typically "https://metaverse.highfidelity.com"
. Read-only.
*/
@@ -160,11 +162,13 @@ signals:
/**jsdoc
* Triggered when the user's visibility to others changes.
* @function AccountServices.findableByChanged
- * @param {string} findableBy - The user's visibility to other people:
- * "none"
- user appears offline.
- * "friends"
- user is visible only to friends.
- * "connections"
- user is visible to friends and connections.
- * "all"
- user is visible to everyone.
+ * @param {string} findableBy - The user's visibility to other people:
+ *
+ * "none"
— user appears offline.
+ * "friends"
— user is visible only to friends.
+ * "connections"
— user is visible to friends and connections.
+ * "all"
— user is visible to everyone.
+ *
* @returns {Signal}
* @example Report when your visiblity changes.
* AccountServices.findableByChanged.connect(function (findableBy) {
diff --git a/interface/src/scripting/ControllerScriptingInterface.h b/interface/src/scripting/ControllerScriptingInterface.h
index 4fb631463e..f65791335d 100644
--- a/interface/src/scripting/ControllerScriptingInterface.h
+++ b/interface/src/scripting/ControllerScriptingInterface.h
@@ -168,7 +168,6 @@ class ScriptEngine;
* startFarTrigger
continueFarTrigger
stopFarTrigger |
* These methods are called when a user is more than 0.3m away from the entity, the entity is triggerable, and the
* user starts, continues, or stops squeezing the trigger. |
- *
* A light switch that can be toggled on and off from a distance. |
*
*
@@ -217,25 +216,25 @@ class ScriptEngine;
*
* @property {Controller.Actions} Actions - Predefined actions on Interface and the user's avatar. These can be used as end
* points in a {@link RouteObject} mapping. A synonym for Controller.Hardware.Actions
.
- * Read-only.
- * Default mappings are provided from the Controller.Hardware.Keyboard
and Controller.Standard
to
- * actions in
+ * Read-only.
+ * Default mappings are provided from the Controller.Hardware.Keyboard
and Controller.Standard
+ * to actions in
*
* keyboardMouse.json and
*
- * standard.json, respectively.
+ * standard.json, respectively.
*
* @property {Controller.Hardware} Hardware - Standard and hardware-specific controller and computer outputs, plus predefined
* actions on Interface and the user's avatar. The outputs can be mapped to Actions
or functions in a
- * {@link RouteObject} mapping. Additionally, hardware-specific controller outputs can be mapped to Standard
- * controller outputs. Read-only.
+ * {@link RouteObject} mapping. Additionally, hardware-specific controller outputs can be mapped to
+ * Controller.Standard
controller outputs. Read-only.
*
* @property {Controller.Standard} Standard - Standard controller outputs that can be mapped to Actions
or
- * functions in a {@link RouteObject} mapping. Read-only.
- * Each hardware device has a mapping from its outputs to Controller.Standard
items, specified in a JSON file.
+ * functions in a {@link RouteObject} mapping. Read-only.
+ * Each hardware device has a mapping from its outputs to Controller.Standard
items, specified in a JSON file.
* For example,
* leapmotion.json and
- * vive.json.
+ * vive.json.
*/
/// handles scripting of input controller commands from JS
diff --git a/interface/src/scripting/DesktopScriptingInterface.cpp b/interface/src/scripting/DesktopScriptingInterface.cpp
index 874b3fa42d..95d3bae332 100644
--- a/interface/src/scripting/DesktopScriptingInterface.cpp
+++ b/interface/src/scripting/DesktopScriptingInterface.cpp
@@ -31,10 +31,10 @@
* @property {InteractiveWindow.DockArea} RIGHT - Dock to the right edge of the Interface window.
*/
/**jsdoc
- * A docking location of an InteractiveWindow
.
+ * A docking location of an InteractiveWindow
.
*
*
- * Value | Name | Description |
+ *
---|
Value | Name | Description |
*
*
* 0 | TOP | Dock to the top edge of the Interface window. |
@@ -73,10 +73,10 @@ int DesktopScriptingInterface::getHeight() {
* own separate window.
*/
/**jsdoc
- * A display mode for an InteractiveWindow
.
+ * A display mode for an InteractiveWindow
.
*
*
- * Value | Name | Description |
+ *
---|
Value | Name | Description |
*
*
* 0 | VIRTUAL | The window is displayed inside Interface: in the desktop window in
diff --git a/interface/src/scripting/MenuScriptingInterface.h b/interface/src/scripting/MenuScriptingInterface.h
index 6c2634b1de..110df8dd06 100644
--- a/interface/src/scripting/MenuScriptingInterface.h
+++ b/interface/src/scripting/MenuScriptingInterface.h
@@ -24,7 +24,8 @@ class MenuItemProperties;
* Groupings
*
* A "grouping" provides a way to group a set of menus or menu items together so that they can all be set visible or invisible
- * as a group. There is currently only one available group: "Developer" . This grouping can be toggled in the
+ * as a group.
+ * There is currently only one available group: "Developer" . This grouping can be toggled in the
* "Settings" menu.
* If a menu item doesn't belong to a group, it is always displayed.
*
diff --git a/interface/src/scripting/SelectionScriptingInterface.cpp b/interface/src/scripting/SelectionScriptingInterface.cpp
index 5856188868..d2147ac5cc 100644
--- a/interface/src/scripting/SelectionScriptingInterface.cpp
+++ b/interface/src/scripting/SelectionScriptingInterface.cpp
@@ -44,7 +44,7 @@ SelectionScriptingInterface::SelectionScriptingInterface() {
}
/**jsdoc
- * The type of a specific item in a selection list.
+ * The type of a specific item in a selection list.
*
*
* Value | Description |
diff --git a/interface/src/scripting/WalletScriptingInterface.h b/interface/src/scripting/WalletScriptingInterface.h
index 3ef9c7953a..e9535ceb4e 100644
--- a/interface/src/scripting/WalletScriptingInterface.h
+++ b/interface/src/scripting/WalletScriptingInterface.h
@@ -42,7 +42,7 @@ public:
* @property {WalletScriptingInterface.WalletStatus} walletStatus - The status of the user's wallet. Read-only.
* @property {boolean} limitedCommerce - true if Interface is running in limited commerce mode. In limited commerce
* mode, certain Interface functionalities are disabled, e.g., users can't buy items that are not free from the Marketplace.
- * The Oculus Store version of Interface runs in limited commerce mode. Read-only.
+ * The Oculus Store and Steam versions of Interface run in limited commerce mode. Read-only.
*/
class WalletScriptingInterface : public QObject, public Dependency {
Q_OBJECT
@@ -73,9 +73,9 @@ public:
/**jsdoc
* Check that a certified avatar entity is owned by the avatar whose entity it is. The result of the check is provided via
* the {@link WalletScriptingInterface.ownershipVerificationSuccess|ownershipVerificationSuccess} and
- * {@link WalletScriptingInterface.ownershipVerificationFailed|ownershipVerificationFailed} signals.
- * Warning: Neither of these signals are triggered if the entity is not an avatar entity or is not
- * certified.
+ * {@link WalletScriptingInterface.ownershipVerificationFailed|ownershipVerificationFailed} signals.
+ * Warning: Neither of these signals are triggered if the entity is not an avatar entity or is not
+ * certified.
* @function WalletScriptingInterface.proveAvatarEntityOwnershipVerification
* @param {Uuid} entityID - The avatar entity's ID.
* @example Check the ownership of all nearby certified avatar entities.
diff --git a/interface/src/scripting/WindowScriptingInterface.h b/interface/src/scripting/WindowScriptingInterface.h
index 6207b22cb8..341b012c2d 100644
--- a/interface/src/scripting/WindowScriptingInterface.h
+++ b/interface/src/scripting/WindowScriptingInterface.h
@@ -326,10 +326,10 @@ public slots:
* full resolution is used (window dimensions in desktop mode; HMD display dimensions in HMD mode), otherwise one of the
* dimensions is adjusted in order to match the aspect ratio.
* @param {string} [filename=""] - If a filename is not provided, the image is saved as "hifi-snap-by-<user
- * name>-on-YYYY-MM-DD_HH-MM-SS".
- * Still images are saved in JPEG or PNG format according to the extension provided — ".jpg" ,
+ * name>-on-YYYY-MM-DD_HH-MM-SS".
+ * Still images are saved in JPEG or PNG format according to the extension provided — ".jpg" ,
* ".jpeg" , or ".png" — or if not provided then in JPEG format with an extension of
- * ".jpg" . Animated images are saved in GIF format.
+ * ".jpg" . Animated images are saved in GIF format.
*
* @example Using the snapshot function and signals.
* function onStillSnapshotTaken(path, notify) {
@@ -365,10 +365,10 @@ public slots:
* @param {boolean} [notify=true] - This value is passed on through the {@link Window.stillSnapshotTaken|stillSnapshotTaken}
* signal.
* @param {string} [filename=""] - If a filename is not provided, the image is saved as "hifi-snap-by-<user
- * name>-on-YYYY-MM-DD_HH-MM-SS".
- * Images are saved in JPEG or PNG format according to the extension provided — ".jpg" ,
+ * name>-on-YYYY-MM-DD_HH-MM-SS".
+ * Images are saved in JPEG or PNG format according to the extension provided — ".jpg" ,
* ".jpeg" , or ".png" — or if not provided then in JPEG format with an extension of
- * ".jpg" .
+ * ".jpg" .
*/
void takeSecondaryCameraSnapshot(const bool& notify = true, const QString& filename = QString());
@@ -384,10 +384,10 @@ public slots:
* @param {boolean} [notify=true] - This value is passed on through the {@link Window.stillSnapshotTaken|stillSnapshotTaken}
* signal.
* @param {string} [filename=""] - If a filename is not provided, the image is saved as "hifi-snap-by-<user
- * name>-on-YYYY-MM-DD_HH-MM-SS".
- * Images are saved in JPEG or PNG format according to the extension provided — ".jpg" ,
+ * name>-on-YYYY-MM-DD_HH-MM-SS".
+ * Images are saved in JPEG or PNG format according to the extension provided — ".jpg" ,
* ".jpeg" , or ".png" — or if not provided then in JPEG format with an extension of
- * ".jpg" .
+ * ".jpg" .
*/
void takeSecondaryCamera360Snapshot(const glm::vec3& cameraPosition, const bool& cubemapOutputFormat = false, const bool& notify = true, const QString& filename = QString());
@@ -515,13 +515,13 @@ public slots:
/**jsdoc
* Opens a URL in the Interface window or other application, depending on the URL's scheme. The following schemes are
- * supported:
+ * supported:
*
* hifi : Navigate to the URL in Interface.
* hifiapp : Open a system app in Interface.
*
- * Other schemes will either be handled by the OS (e.g. http , https , or mailto ) or
- * will display a dialog asking the user to confirm that they want to try to open the URL.
+ * Other schemes will either be handled by the OS (e.g. http , https , or mailto ) or
+ * will display a dialog asking the user to confirm that they want to try to open the URL.
* @function Window.openUrl
* @param {string} url - The URL to open.
*/
@@ -623,8 +623,8 @@ private slots:
signals:
/**jsdoc
- * Triggered when you change the domain you're visiting. Warning: Is not emitted if you go to a domain
- * that isn't running.
+ * Triggered when you change the domain you're visiting.
+ * Warning: Is not emitted if you go to a domain that isn't running.
* @function Window.domainChanged
* @param {string} domainURL - The domain's URL.
* @returns {Signal}
diff --git a/interface/src/ui/InteractiveWindow.h b/interface/src/ui/InteractiveWindow.h
index 70077a27b0..ba53684173 100644
--- a/interface/src/ui/InteractiveWindow.h
+++ b/interface/src/ui/InteractiveWindow.h
@@ -56,8 +56,8 @@ namespace InteractiveWindowEnums {
Q_NAMESPACE
/**jsdoc
- * A set of flags controlling InteractiveWindow behavior. The value is constructed by using the
- * | (bitwise OR) operator on the individual flag values.
+ * A set of flags controlling InteractiveWindow behavior. The value is constructed by using the
+ * | (bitwise OR) operator on the individual flag values.
*
*
* Flag Name | Value | Description |
diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp
index 100711d69b..5e43c5df8d 100644
--- a/interface/src/ui/overlays/Overlays.cpp
+++ b/interface/src/ui/overlays/Overlays.cpp
@@ -1346,49 +1346,48 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* Some text. |
* {@link Overlays.OverlayProperties-Text|OverlayProperties-Text} |
* "cube" | 3D |
- * A cube. A "shape" overlay can also be used to create a cube.
- * Deprecated.
- * |
+ * A cube. A "shape" overlay can also be used to create a cube.
+ * Deprecated. |
* {@link Overlays.OverlayProperties-Cube|OverlayProperties-Cube} |
* "sphere" | 3D |
- * A sphere. A "shape" overlay can also be used to create a sphere.
- * Deprecated. |
+ * A sphere. A "shape" overlay can also be used to create a sphere.
+ * Deprecated. |
* {@link Overlays.OverlayProperties-Sphere|OverlayProperties-Sphere} |
* "shape" | 3D |
- * A geometric shape, such as a cube, sphere, or cylinder.
- * Deprecated. |
+ * A geometric shape, such as a cube, sphere, or cylinder.
+ * Deprecated. |
* {@link Overlays.OverlayProperties-Shape|OverlayProperties-Shape} |
* "model" | 3D |
- * A model.
- * Deprecated. |
+ * A model.
+ * Deprecated. |
* {@link Overlays.OverlayProperties-Model|OverlayProperties-Model} |
* "image3d" | 3D |
- * An image. Synonym: "billboard" .
- * Deprecated. |
+ * An image. Synonym: "billboard" .
+ * Deprecated. |
* {@link Overlays.OverlayProperties-Image3D|OverlayProperties-Image3D} |
* "rectangle3d" | 3D |
- * A rectangle.
- * Deprecated. |
+ * A rectangle.
+ * Deprecated. |
* {@link Overlays.OverlayProperties-Rectangle3D|OverlayProperties-Rectangle3D} |
* "text3d" | 3D |
- * Some text.
- * Deprecated. |
+ * Some text.
+ * Deprecated. |
* {@link Overlays.OverlayProperties-Text3D|OverlayProperties-Text3D} |
* "web3d" | 3D |
- * Web content.
- * Deprecated. |
+ * Web content.
+ * Deprecated. |
* {@link Overlays.OverlayProperties-Web3D|OverlayProperties-Web3D} |
* "line3d" | 3D |
- * A line.
- * Deprecated. |
+ * A line.
+ * Deprecated. |
* {@link Overlays.OverlayProperties-Line3D|OverlayProperties-Line3D} |
* "grid" | 3D |
- * A grid of lines in a plane.
- * Deprecated. |
+ * A grid of lines in a plane.
+ * Deprecated. |
* {@link Overlays.OverlayProperties-Grid|OverlayProperties-Grid} |
* "circle3d" | 3D |
- * A circle.
- * Deprecated. |
+ * A circle.
+ * Deprecated. |
* {@link Overlays.OverlayProperties-Circle3D|OverlayProperties-Circle3D} |
*
*
@@ -1410,17 +1409,17 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* @see {@link Overlays.OverlayProperties-Rectangle|OverlayProperties-Rectangle}
* @see {@link Overlays.OverlayProperties-Image|OverlayProperties-Image}
* @see {@link Overlays.OverlayProperties-Text|OverlayProperties-Text}
- * @see {@link Overlays.OverlayProperties-Cube|OverlayProperties-Cube} Deprecated.
- * @see {@link Overlays.OverlayProperties-Sphere|OverlayProperties-Sphere} Deprecated.
- * @see {@link Overlays.OverlayProperties-Shape|OverlayProperties-Shape} Deprecated.
- * @see {@link Overlays.OverlayProperties-Model|OverlayProperties-Model} Deprecated.
- * @see {@link Overlays.OverlayProperties-Rectangle3D|OverlayProperties-Rectangle3D} Deprecated.
- * @see {@link Overlays.OverlayProperties-Image3D|OverlayProperties-Image3D} Deprecated.
- * @see {@link Overlays.OverlayProperties-Text3D|OverlayProperties-Text3D} Deprecated.
- * @see {@link Overlays.OverlayProperties-Web3D|OverlayProperties-Web3D} Deprecated.
- * @see {@link Overlays.OverlayProperties-Line3D|OverlayProperties-Line3D} Deprecated.
- * @see {@link Overlays.OverlayProperties-Grid|OverlayProperties-Grid} Deprecated.
- * @see {@link Overlays.OverlayProperties-Circle3D|OverlayProperties-Circle3D} Deprecated.
+ * @see {@link Overlays.OverlayProperties-Cube|OverlayProperties-Cube} — Deprecated.
+ * @see {@link Overlays.OverlayProperties-Sphere|OverlayProperties-Sphere} — Deprecated.
+ * @see {@link Overlays.OverlayProperties-Shape|OverlayProperties-Shape} — Deprecated.
+ * @see {@link Overlays.OverlayProperties-Model|OverlayProperties-Model} — Deprecated.
+ * @see {@link Overlays.OverlayProperties-Rectangle3D|OverlayProperties-Rectangle3D} — Deprecated.
+ * @see {@link Overlays.OverlayProperties-Image3D|OverlayProperties-Image3D} — Deprecated.
+ * @see {@link Overlays.OverlayProperties-Text3D|OverlayProperties-Text3D} — Deprecated.
+ * @see {@link Overlays.OverlayProperties-Web3D|OverlayProperties-Web3D} — Deprecated.
+ * @see {@link Overlays.OverlayProperties-Line3D|OverlayProperties-Line3D} — Deprecated.
+ * @see {@link Overlays.OverlayProperties-Grid|OverlayProperties-Grid} — Deprecated.
+ * @see {@link Overlays.OverlayProperties-Circle3D|OverlayProperties-Circle3D} — Deprecated.
*/
/**jsdoc
@@ -1502,11 +1501,11 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* @property {number} pulsePeriod=1 - The duration of the color and alpha pulse, in seconds. A pulse multiplier value goes from
* pulseMin to pulseMax , then pulseMax to pulseMin in one period.
* @property {number} alphaPulse=0 - If non-zero, the alpha of the overlay is pulsed: the alpha value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
* @property {number} colorPulse=0 - If non-zero, the color of the overlay is pulsed: the color value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
*
@@ -1520,7 +1519,7 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* parentID set, otherwise the same value as rotation . Synonym: localOrientation .
* @property {boolean} isSolid=false - true if the overlay is rendered as a solid, false if it is
* rendered as a wire frame.
- * Synonyms: solid, isFilled , and filled .
+ * Synonyms: solid , isFilled , and filled .
* Antonyms: isWire and wire .
* @property {boolean} ignorePickIntersection=false - true if {@link Picks} ignore the overlay, false
* if they don't.
@@ -1550,11 +1549,11 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* @property {number} pulsePeriod=1 - The duration of the color and alpha pulse, in seconds. A pulse multiplier value goes from
* pulseMin to pulseMax , then pulseMax to pulseMin in one period.
* @property {number} alphaPulse=0 - If non-zero, the alpha of the overlay is pulsed: the alpha value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
* @property {number} colorPulse=0 - If non-zero, the color of the overlay is pulsed: the color value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
*
@@ -1568,7 +1567,7 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* parentID set, otherwise the same value as rotation . Synonym: localOrientation .
* @property {boolean} isSolid=false - true if the overlay is rendered as a solid, false if it is
* rendered as a wire frame.
- * Synonyms: solid, isFilled , and filled .
+ * Synonyms: solid , isFilled , and filled .
* Antonyms: isWire and wire .
* @property {boolean} ignorePickIntersection=false - true if {@link Picks} ignore the overlay, false
* if they don't.
@@ -1599,11 +1598,11 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* @property {number} pulsePeriod=1 - The duration of the color and alpha pulse, in seconds. A pulse multiplier value goes from
* pulseMin to pulseMax , then pulseMax to pulseMin in one period.
* @property {number} alphaPulse=0 - If non-zero, the alpha of the overlay is pulsed: the alpha value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
* @property {number} colorPulse=0 - If non-zero, the color of the overlay is pulsed: the color value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
*
@@ -1617,7 +1616,7 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* parentID set, otherwise the same value as rotation . Synonym: localOrientation .
* @property {boolean} isSolid=false - true if the overlay is rendered as a solid, false if it is
* rendered as a wire frame.
- * Synonyms: solid, isFilled , and filled .
+ * Synonyms: solid , isFilled , and filled .
* Antonyms: isWire and wire .
* @property {boolean} ignorePickIntersection=false - true if {@link Picks} ignore the overlay, false
* if they don't.
@@ -1641,7 +1640,7 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* Value | Dimensions | Description |
*
*
- * "Circle" | 2D | A circle oriented in 3D. |
+ * "Circle" | 2D | A circle oriented in 3D. |
* "Cone" | 3D | |
* "Cube" | 3D | |
* "Cylinder" | 3D | |
@@ -1674,11 +1673,11 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* @property {number} pulsePeriod=1 - The duration of the color and alpha pulse, in seconds. A pulse multiplier value goes from
* pulseMin to pulseMax , then pulseMax to pulseMin in one period.
* @property {number} alphaPulse=0 - If non-zero, the alpha of the overlay is pulsed: the alpha value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
* @property {number} colorPulse=0 - If non-zero, the color of the overlay is pulsed: the color value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
*
@@ -1692,7 +1691,7 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* parentID set, otherwise the same value as rotation . Synonym: localOrientation .
* @property {boolean} isSolid=false - true if the overlay is rendered as a solid, false if it is
* rendered as a wire frame.
- * Synonyms: solid, isFilled , and filled .
+ * Synonyms: solid , isFilled , and filled .
* Antonyms: isWire and wire .
* @property {boolean} ignorePickIntersection=false - true if {@link Picks} ignore the overlay, false
* if they don't.
@@ -1761,17 +1760,17 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* @property {Color} color=255,255,255 - The color of the overlay text. Synonym: textColor .
* @property {number} alpha=0.7 - The opacity of the overlay text, 0.0 – 1.0 .
* Currently not used; use textAlpha instead.
- *
+ * @comment CURRENTLY BROKEN
* @property {number} pulseMax=0 - The maximum value of the pulse multiplier.
* @property {number} pulseMin=0 - The minimum value of the pulse multiplier.
* @property {number} pulsePeriod=1 - The duration of the color and alpha pulse, in seconds. A pulse multiplier value goes from
* pulseMin to pulseMax , then pulseMax to pulseMin in one period.
* @property {number} alphaPulse=0 - If non-zero, the alpha of the overlay is pulsed: the alpha value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
* @property {number} colorPulse=0 - If non-zero, the color of the overlay is pulsed: the color value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
*
@@ -1811,11 +1810,11 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* @property {number} pulsePeriod=1 - The duration of the color and alpha pulse, in seconds. A pulse multiplier value goes from
* pulseMin to pulseMax , then pulseMax to pulseMin in one period.
* @property {number} alphaPulse=0 - If non-zero, the alpha of the overlay is pulsed: the alpha value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
* @property {number} colorPulse=0 - If non-zero, the color of the overlay is pulsed: the color value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
*
@@ -1857,11 +1856,11 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* @property {number} pulsePeriod=1 - The duration of the color and alpha pulse, in seconds. A pulse multiplier value goes from
* pulseMin to pulseMax , then pulseMax to pulseMin in one period.
* @property {number} alphaPulse=0 - If non-zero, the alpha of the overlay is pulsed: the alpha value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
* @property {number} colorPulse=0 - If non-zero, the color of the overlay is pulsed: the color value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
*
@@ -1916,41 +1915,45 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* HUD surface.
* @property {boolean} grabbable=false - true if the overlay can be grabbed, false if it can't be.
* @property {Uuid} parentID=null - The avatar, entity, or overlay that the overlay is parented to.
+ * Currently doesn't work.
+ * @comment CURRENTLY BROKEN
* @property {number} parentJointIndex=65535 - Integer value specifying the joint of the entity or avatar that the entity is
* parented to if parentID is set. Use 65535 or -1 to parent to the parent's position and orientation rather
* than a joint.
*
* @property {Uuid} endParentID=null - The avatar, entity, or overlay that the end point of the line is parented to.
* Currently doesn't work.
- *
+ * @comment CURRENTLY BROKEN
* @property {number} endParentJointIndex=65535 - Integer value specifying the skeleton joint that the end point of the line is
* attached to if parentID is an avatar skeleton. A value of 65535 means "no joint".
* Currently doesn't work.
- *
+ * @comment CURRENTLY BROKEN
* @property {Vec3} start - The start point of the line. Synonyms: startPoint and p1 .
- * If parentID is set, use localStart to set the local position of the start point.
- *
+ * Note: If parentID is set, use localStart to set the local position of the
+ * start point.
* @property {Vec3} end - The end point of the line. Synonyms: endPoint and p2 .
- * If parentID is set, use localEnd to set the local position of the end point.
- *
+ * Note: If parentID is set, use localEnd to set the local position of the
+ * end point.
* @property {Vec3} localStart - The local position of the overlay relative to its parent if the overlay has a
* parentID set, otherwise the same value as start .
- *
+ * Currently doesn't work.
+ * @comment CURRENTLY BROKEN
* @property {Vec3} localEnd - The local position of the overlay relative to its parent if the overlay has a
* endParentID set, otherwise the same value as end .
- *
+ * Currently doesn't work.
+ * @comment CURRENTLY BROKEN
* @property {number} length - The length of the line, in meters. This can be set after creating a line with start and end
* points.
* Currently doesn't work.
- *
+ * @comment CURRENTLY BROKEN
* @property {number} glow=0 - If glow > 0 , the line is rendered with a glow.
* @property {number} lineWidth=0.02 - Width of the line, in meters.
* You can set this property's value but currently cannot retrieve its value. Use the strokeWidths
- * property to retrieve its value instead.
+ * property to retrieve its value instead.
*/
/**jsdoc
@@ -1967,11 +1970,11 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* @property {number} pulsePeriod=1 - The duration of the color and alpha pulse, in seconds. A pulse multiplier value goes from
* pulseMin to pulseMax , then pulseMax to pulseMin in one period.
* @property {number} alphaPulse=0 - If non-zero, the alpha of the overlay is pulsed: the alpha value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
* @property {number} colorPulse=0 - If non-zero, the color of the overlay is pulsed: the color value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
*
@@ -2010,11 +2013,11 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* @property {number} pulsePeriod=1 - The duration of the color and alpha pulse, in seconds. A pulse multiplier value goes from
* pulseMin to pulseMax , then pulseMax to pulseMin in one period.
* @property {number} alphaPulse=0 - If non-zero, the alpha of the overlay is pulsed: the alpha value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
* @property {number} colorPulse=0 - If non-zero, the color of the overlay is pulsed: the color value is multiplied by the
- * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
+ * current pulse multiplier value each frame. If > 0 the pulse multiplier is applied in phase with the pulse period; if < 0
* the pulse multiplier is applied out of phase with the pulse period. (The magnitude of the property isn't otherwise
* used.)
*
@@ -2029,7 +2032,7 @@ QVector Overlays::findOverlays(const glm::vec3& center, float radius) {
* parentID set, otherwise the same value as rotation . Synonym: localOrientation .
* @property {boolean} isSolid=false - true if the overlay is rendered as a solid, false if it is
* rendered as a wire frame.
- * Synonyms: solid, isFilled , and filled .
+ * Synonyms: solid , isFilled , and filled .
* Antonyms: isWire and wire .
* @property {boolean} ignorePickIntersection=false - true if {@link Picks} ignore the overlay, false
* if they don't.
diff --git a/libraries/animation/src/AnimInverseKinematics.h b/libraries/animation/src/AnimInverseKinematics.h
index 8d3f898e67..bcad7867cc 100644
--- a/libraries/animation/src/AnimInverseKinematics.h
+++ b/libraries/animation/src/AnimInverseKinematics.h
@@ -63,7 +63,7 @@ public:
* Specifies the initial conditions of the IK solver.
*
*
- * Value | Name | Description |
+ *
---|
Value | Name | Description |
*
*
* 0 | RelaxToUnderPoses | This is a blend: it is 15/16 PreviousSolution
@@ -73,12 +73,14 @@ public:
* | 1 | RelaxToLimitCenterPoses | This is a blend: it is 15/16
* PreviousSolution and 1/16 LimitCenterPoses . This should converge quickly because it is
* close to the previous solution, but still provides the benefits of avoiding limb locking. |
- * 2 | PreviousSolution | The IK system will begin to solve from the same position and
- * orientations for each joint that was the result from the previous frame.
- * Pros: As the end effectors typically do not move much from frame to frame, this is likely to converge quickly
- * to a valid solution.
- * Cons: If the previous solution resulted in an awkward or uncomfortable posture, the next frame will also be
- * awkward and uncomfortable. It can also result in locked elbows and knees. |
+ * 2 | PreviousSolution |
+ * The IK system will begin to solve from the same position and orientations for each joint that was the result
+ * from the previous frame.
+ * Pros: As the end effectors typically do not move much from frame to frame, this is likely to converge quickly
+ * to a valid solution.
+ * Cons: If the previous solution resulted in an awkward or uncomfortable posture, the next frame will also be
+ * awkward and uncomfortable. It can also result in locked elbows and knees.
+ * |
* 3 | UnderPoses | The IK occurs at one of the top-most layers. It has access to the
* full posture that was computed via canned animations and blends. We call this animated set of poses the "under
* pose". The under poses are what would be visible if IK was completely disabled. Using the under poses as the
diff --git a/libraries/animation/src/AnimOverlay.h b/libraries/animation/src/AnimOverlay.h
index 1ad4e100db..d5e114a2d2 100644
--- a/libraries/animation/src/AnimOverlay.h
+++ b/libraries/animation/src/AnimOverlay.h
@@ -28,7 +28,7 @@ public:
* Specifies sets of joints.
*
*
- * Value | Name | Description |
+ *
---|
Value | Name | Description |
*
*
* 0 | FullBodyBoneSet | All joints. |
diff --git a/libraries/animation/src/IKTarget.h b/libraries/animation/src/IKTarget.h
index 331acedd4e..a56f5578b3 100644
--- a/libraries/animation/src/IKTarget.h
+++ b/libraries/animation/src/IKTarget.h
@@ -20,14 +20,14 @@ public:
* An IK target type.
*
*
- * Value | Name | Description |
+ *
---|
Value | Name | Description |
*
*
* 0 | RotationAndPosition | Attempt to reach the rotation and position end
* effector. |
* 1 | RotationOnly | Attempt to reach the end effector rotation only. |
- * 2 | HmdHead | A special mode of IK that would attempt to prevent unnecessary
- * bending of the spine.
+ * | 2 | HmdHead |
+ * A special mode of IK that would attempt to prevent unnecessary bending of the spine.
* Deprecated: This target type is deprecated and will be removed. |
* 3 | HipsRelativeRotationAndPosition | Attempt to reach a rotation and position end
* effector that is not in absolute rig coordinates but is offset by the avatar hips translation. |
diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp
index d63c2d6a9b..42980f47a7 100644
--- a/libraries/animation/src/Rig.cpp
+++ b/libraries/animation/src/Rig.cpp
@@ -95,7 +95,7 @@ static const QString MAIN_STATE_MACHINE_RIGHT_HAND_POSITION("mainStateMachineRig
* Warning: These properties are subject to change.
*
*
- * Name | Type | Description |
+ *
---|
Name | Type | Description |
*
*
* userAnimNone | boolean | true when no user overrideAnimation is
diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp
index e9ae278710..783bfb2747 100644
--- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp
+++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp
@@ -545,7 +545,7 @@ void Avatar::relayJointDataToChildren() {
}
/**jsdoc
- * An avatar has different types of data simulated at different rates, in Hz.
+ * An avatar has different types of data simulated at different rates, in Hz.
*
*
*
diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h
index b969449d5e..610f34ed45 100644
--- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h
+++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h
@@ -470,7 +470,7 @@ public:
/**jsdoc
* Sets the joint of the entity or avatar that the avatar is parented to.
* @function MyAvatar.setParentJointIndex
- * @param {number} parentJointIndex - he joint of the entity or avatar that the avatar should be parented to. Use
+ * @param {number} parentJointIndex - The joint of the entity or avatar that the avatar should be parented to. Use
* 65535 or -1 to parent to the entity or avatar's position and orientation rather than a
* joint.
*/
diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp
index a91154ff15..710bfb8d2a 100755
--- a/libraries/avatars/src/AvatarData.cpp
+++ b/libraries/avatars/src/AvatarData.cpp
@@ -1445,7 +1445,7 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) {
}
/**jsdoc
- * The avatar mixer data comprises different types of data, with the data rates of each being tracked in kbps.
+ * The avatar mixer data comprises different types of data, with the data rates of each being tracked in kbps.
*
*
*
@@ -1550,7 +1550,7 @@ float AvatarData::getDataRate(const QString& rateName) const {
}
/**jsdoc
- * The avatar mixer data comprises different types of data updated at different rates, in Hz.
+ * The avatar mixer data comprises different types of data updated at different rates, in Hz.
*
*
*
diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h
index 59a2e2a53e..df0783ef4b 100755
--- a/libraries/avatars/src/AvatarData.h
+++ b/libraries/avatars/src/AvatarData.h
@@ -1277,9 +1277,9 @@ public:
* @param {number} [scale=1.0] - The scale to apply to the model.
* @param {boolean} [isSoft=false] - If the model has a skeleton, set this to true so that the bones of the
* attached model's skeleton are rotated to fit the avatar's current pose. isSoft is used, for example,
- * to have clothing that moves with the avatar.
- * If true , the translation , rotation , and scale parameters are
- * ignored.
+ * to have clothing that moves with the avatar.
+ * If true , the translation , rotation , and scale parameters are
+ * ignored.
* @param {boolean} [allowDuplicates=false] - If true then more than one copy of any particular model may be
* attached to the same joint; if false then the same model cannot be attached to the same joint.
* @param {boolean} [useSaved=true] - Not used.
diff --git a/libraries/controllers/src/controllers/Actions.cpp b/libraries/controllers/src/controllers/Actions.cpp
index 40011f2682..6be0a5a800 100644
--- a/libraries/controllers/src/controllers/Actions.cpp
+++ b/libraries/controllers/src/controllers/Actions.cpp
@@ -44,7 +44,7 @@ namespace controller {
* Property | Type | Data | Description |
*
*
- * Avatar Movement |
+ * Avatar Movement |
* TranslateX | number | number | Move the user's avatar in the direction of its
* x-axis, if the camera isn't in independent or mirror modes. |
* TranslateY | number | number | Move the user's avatar in the direction of its
@@ -71,7 +71,7 @@ namespace controller {
* step increment, if the camera isn't in independent or mirror modes. |
* StepRoll | number | number | No action. |
*
- * Avatar Skeleton |
+ * Avatar Skeleton |
* Hips | number | {@link Pose} | Set the hips pose of the user's avatar.
* |
* Spine2 | number | {@link Pose} | Set the spine2 pose of the user's avatar.
@@ -171,7 +171,7 @@ namespace controller {
* | RightFoot | number | {@link Pose} | Set the right foot pose of the user's
* avatar. |
*
- * Application |
+ * Application |
* BoomIn | number | number | Zoom camera in from third person toward first
* person view. |
* BoomOut | number | number | Zoom camera out from first person to third
@@ -212,7 +212,7 @@ namespace controller {
* | SecondaryAction | number | number | Deprecated: This
* action is deprecated and will be removed. It takes no action. |
*
- * Aliases |
+ * Aliases |
* Backward | number | number | Alias for TranslateZ in the
* positive direction. |
* Forward | number | number | Alias for TranslateZ in the negative
@@ -234,7 +234,7 @@ namespace controller {
* | YawRight | number | number | Alias for Yaw in the negative
* direction. |
*
- * Deprecated Aliases |
+ * Deprecated Aliases |
* LEFT_HAND | number | {@link Pose} | Deprecated: This
* action is deprecated and will be removed. Use LeftHand instead. |
* RIGHT_HAND | number | {@link Pose} | Deprecated: This
@@ -282,7 +282,7 @@ namespace controller {
* ACTION2 | number | number | Deprecated: This
* action is deprecated and will be removed. Use SecondaryAction instead. |
*
- * Deprecated Trackers |
+ * Deprecated Trackers |
* TrackedObject00 | number | {@link Pose} | Deprecated:
* This action is deprecated and will be removed. It takes no action. |
* TrackedObject01 | number | {@link Pose} | Deprecated:
diff --git a/libraries/controllers/src/controllers/StandardController.cpp b/libraries/controllers/src/controllers/StandardController.cpp
index dbc92cc7e5..ae592485dc 100644
--- a/libraries/controllers/src/controllers/StandardController.cpp
+++ b/libraries/controllers/src/controllers/StandardController.cpp
@@ -33,7 +33,7 @@ void StandardController::focusOutEvent() {
* identifying each output. Read-only.
* These outputs can be mapped to actions or functions in a {@link RouteObject} mapping. The data value provided by each
* control is either a number or a {@link Pose}. Numbers are typically normalized to 0.0 or 1.0 for
- * button states, the range 0.0 – 1.0 for unidirectional scales, and the range
+ * button states, the range 0.0 – 1.0 for unidirectional scales, and the range
* -1.0 – 1.0 for bidirectional scales.
* Each hardware device has a mapping from its outputs to a subset of Controller.Standard items, specified in a
* JSON file. For example,
@@ -118,8 +118,7 @@ void StandardController::focusOutEvent() {
* button. |
* RightThumbUp | number | number | Right thumb not touching primary or secondary
* thumb buttons. |
- * LeftPrimaryIndex | number | number | Left primary index control
- * pressed. |
+ * LeftPrimaryIndex | number | number | Left primary index control pressed. |
* LeftSecondaryIndex | number | number | Left secondary index control pressed.
* |
* RightPrimaryIndex | number | number | Right primary index control pressed.
diff --git a/libraries/controllers/src/controllers/impl/MappingBuilderProxy.h b/libraries/controllers/src/controllers/impl/MappingBuilderProxy.h
index f0a823a3de..5a8fd3083d 100644
--- a/libraries/controllers/src/controllers/impl/MappingBuilderProxy.h
+++ b/libraries/controllers/src/controllers/impl/MappingBuilderProxy.h
@@ -86,7 +86,7 @@ class UserInputMapper;
* @typedef {object} Controller.MappingJSONRoute
* @property {string|Controller.MappingJSONAxis} from - The name of a {@link Controller.Hardware} property or an axis made from
* them. If a property name, the leading "Controller.Hardware." can be omitted.
- * @property {boolean} [peek=false] - If true, then peeking is enabled per {@link RouteObject#peek}.
+ * @property {boolean} [peek=false] - If true , then peeking is enabled per {@link RouteObject#peek}.
* @property {boolean} [debug=false] - If true , then debug is enabled per {@link RouteObject#debug}.
* @property {string|string[]} [when=[]] - One or more numeric {@link Controller.Hardware} property names which are evaluated
* as booleans and ANDed together. Prepend a property name with a ! to do a logical NOT. The leading
@@ -135,8 +135,8 @@ public:
/**jsdoc
* Creates a new {@link RouteObject} from a controller output, ready to be mapped to a standard control, action, or
- * function.
- * This is a QML-specific version of {@link MappingObject#from|from}: use this version in QML files.
+ * function.
+ * This is a QML-specific version of {@link MappingObject#from|from}: use this version in QML files.
* @function MappingObject#fromQml
* @param {Controller.Standard|Controller.Hardware|function} source - The controller output or function that is the source
* of the route data. If a function, it must return a number or a {@link Pose} value as the route data.
@@ -146,8 +146,8 @@ public:
/**jsdoc
* Creates a new {@link RouteObject} from two numeric {@link Controller.Hardware} outputs, one applied in the negative
- * direction and the other in the positive direction, ready to be mapped to a standard control, action, or function.
- * This is a QML-specific version of {@link MappingObject#makeAxis|makeAxis}: use this version in QML files.
+ * direction and the other in the positive direction, ready to be mapped to a standard control, action, or function.
+ * This is a QML-specific version of {@link MappingObject#makeAxis|makeAxis}: use this version in QML files.
* @function MappingObject#makeAxisQml
* @param {Controller.Hardware} source1 - The first, negative-direction controller output.
* @param {Controller.Hardware} source2 - The second, positive-direction controller output.
@@ -189,8 +189,8 @@ public:
Q_INVOKABLE QObject* makeAxis(const QScriptValue& source1, const QScriptValue& source2);
/**jsdoc
- * Enables or disables the mapping. When enabled, the routes in the mapping take effect.
- * Synonymous with {@link Controller.enableMapping}.
+ * Enables or disables the mapping. When enabled, the routes in the mapping take effect.
+ * Synonymous with {@link Controller.enableMapping}.
* @function MappingObject#enable
* @param {boolean} enable=true - If true then the mapping is enabled, otherwise it is disabled.
* @returns {MappingObject} The mapping object, so that further routes can be added.
@@ -198,8 +198,8 @@ public:
Q_INVOKABLE QObject* enable(bool enable = true);
/**jsdoc
- * Disables the mapping. When disabled, the routes in the mapping have no effect.
- * Synonymous with {@link Controller.disableMapping}.
+ * Disables the mapping. When disabled, the routes in the mapping have no effect.
+ * Synonymous with {@link Controller.disableMapping}.
* @function MappingObject#disable
* @returns {MappingObject} The mapping object, so that further routes can be added.
*/
diff --git a/libraries/controllers/src/controllers/impl/RouteBuilderProxy.h b/libraries/controllers/src/controllers/impl/RouteBuilderProxy.h
index e7ff04d72c..f1b36cfec5 100644
--- a/libraries/controllers/src/controllers/impl/RouteBuilderProxy.h
+++ b/libraries/controllers/src/controllers/impl/RouteBuilderProxy.h
@@ -52,8 +52,8 @@ class RouteBuilderProxy : public QObject {
/**jsdoc
* Terminates the route with a standard control, an action, or a script function. The output value from the route is
- * sent to the specified destination.
- * This is a QML-specific version of {@link MappingObject#to|to}: use this version in QML files.
+ * sent to the specified destination.
+ * This is a QML-specific version of {@link MappingObject#to|to}: use this version in QML files.
* @function RouteObject#toQml
* @param {Controller.Standard|Controller.Actions|function} destination - The standard control, action, or JavaScript
* function that the route output is mapped to. For a function, the parameter can be either the name of the function or
@@ -64,8 +64,8 @@ class RouteBuilderProxy : public QObject {
/**jsdoc
* Processes the route only if a condition is satisfied. The condition is evaluated before the route input is read, and
* the input is read only if the condition is true . Thus, if the condition is not met then subsequent
- * routes using the same input are processed.
- * This is a QML-specific version of {@link MappingObject#to|to}: use this version in QML files.
+ * routes using the same input are processed.
+ * This is a QML-specific version of {@link MappingObject#when|when}: use this version in QML files.
* @function RouteObject#whenQml
* @param {condition|condition[]} expression - A condition may be a:
*
diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp
index 52738bb6cd..ab3f4c5243 100644
--- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp
+++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp
@@ -168,47 +168,52 @@ void EntityTreeRenderer::resetEntitiesScriptEngine() {
entityScriptingInterface->setEntitiesScriptEngine(entitiesScriptEngineProvider);
// Connect mouse events to entity script callbacks
- connect(entityScriptingInterface.data(), &EntityScriptingInterface::mousePressOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
- _entitiesScriptEngine->callEntityScriptMethod(entityID, "mousePressOnEntity", event);
- });
- connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseDoublePressOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
- _entitiesScriptEngine->callEntityScriptMethod(entityID, "mouseDoublePressOnEntity", event);
- });
- connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseMoveOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
- _entitiesScriptEngine->callEntityScriptMethod(entityID, "mouseMoveOnEntity", event);
- // FIXME: this is a duplicate of mouseMoveOnEntity, but it seems like some scripts might use this naming
- _entitiesScriptEngine->callEntityScriptMethod(entityID, "mouseMoveEvent", event);
- });
- connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseReleaseOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
- _entitiesScriptEngine->callEntityScriptMethod(entityID, "mouseReleaseOnEntity", event);
- });
+ if (!_mouseAndPreloadSignalHandlersConnected) {
+
+ connect(entityScriptingInterface.data(), &EntityScriptingInterface::mousePressOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
+ _entitiesScriptEngine->callEntityScriptMethod(entityID, "mousePressOnEntity", event);
+ });
+ connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseDoublePressOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
+ _entitiesScriptEngine->callEntityScriptMethod(entityID, "mouseDoublePressOnEntity", event);
+ });
+ connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseMoveOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
+ _entitiesScriptEngine->callEntityScriptMethod(entityID, "mouseMoveOnEntity", event);
+ // FIXME: this is a duplicate of mouseMoveOnEntity, but it seems like some scripts might use this naming
+ _entitiesScriptEngine->callEntityScriptMethod(entityID, "mouseMoveEvent", event);
+ });
+ connect(entityScriptingInterface.data(), &EntityScriptingInterface::mouseReleaseOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
+ _entitiesScriptEngine->callEntityScriptMethod(entityID, "mouseReleaseOnEntity", event);
+ });
- connect(entityScriptingInterface.data(), &EntityScriptingInterface::clickDownOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
- _entitiesScriptEngine->callEntityScriptMethod(entityID, "clickDownOnEntity", event);
- });
- connect(entityScriptingInterface.data(), &EntityScriptingInterface::holdingClickOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
- _entitiesScriptEngine->callEntityScriptMethod(entityID, "holdingClickOnEntity", event);
- });
- connect(entityScriptingInterface.data(), &EntityScriptingInterface::clickReleaseOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
- _entitiesScriptEngine->callEntityScriptMethod(entityID, "clickReleaseOnEntity", event);
- });
+ connect(entityScriptingInterface.data(), &EntityScriptingInterface::clickDownOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
+ _entitiesScriptEngine->callEntityScriptMethod(entityID, "clickDownOnEntity", event);
+ });
+ connect(entityScriptingInterface.data(), &EntityScriptingInterface::holdingClickOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
+ _entitiesScriptEngine->callEntityScriptMethod(entityID, "holdingClickOnEntity", event);
+ });
+ connect(entityScriptingInterface.data(), &EntityScriptingInterface::clickReleaseOnEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
+ _entitiesScriptEngine->callEntityScriptMethod(entityID, "clickReleaseOnEntity", event);
+ });
- connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverEnterEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
- _entitiesScriptEngine->callEntityScriptMethod(entityID, "hoverEnterEntity", event);
- });
- connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverOverEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
- _entitiesScriptEngine->callEntityScriptMethod(entityID, "hoverOverEntity", event);
- });
- connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverLeaveEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
- _entitiesScriptEngine->callEntityScriptMethod(entityID, "hoverLeaveEntity", event);
- });
+ connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverEnterEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
+ _entitiesScriptEngine->callEntityScriptMethod(entityID, "hoverEnterEntity", event);
+ });
+ connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverOverEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
+ _entitiesScriptEngine->callEntityScriptMethod(entityID, "hoverOverEntity", event);
+ });
+ connect(entityScriptingInterface.data(), &EntityScriptingInterface::hoverLeaveEntity, _entitiesScriptEngine.data(), [&](const EntityItemID& entityID, const PointerEvent& event) {
+ _entitiesScriptEngine->callEntityScriptMethod(entityID, "hoverLeaveEntity", event);
+ });
- connect(_entitiesScriptEngine.data(), &ScriptEngine::entityScriptPreloadFinished, [&](const EntityItemID& entityID) {
- EntityItemPointer entity = getTree()->findEntityByID(entityID);
- if (entity) {
- entity->setScriptHasFinishedPreload(true);
- }
- });
+ connect(_entitiesScriptEngine.data(), &ScriptEngine::entityScriptPreloadFinished, [&](const EntityItemID& entityID) {
+ EntityItemPointer entity = getTree()->findEntityByID(entityID);
+ if (entity) {
+ entity->setScriptHasFinishedPreload(true);
+ }
+ });
+
+ _mouseAndPreloadSignalHandlersConnected = true;
+ }
}
void EntityTreeRenderer::stopDomainAndNonOwnedEntities() {
diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.h b/libraries/entities-renderer/src/EntityTreeRenderer.h
index b9fda690dd..6dbaedc123 100644
--- a/libraries/entities-renderer/src/EntityTreeRenderer.h
+++ b/libraries/entities-renderer/src/EntityTreeRenderer.h
@@ -210,6 +210,8 @@ private:
std::function _getPrevRayPickResultOperator;
std::function _setPrecisionPickingOperator;
+ bool _mouseAndPreloadSignalHandlersConnected { false };
+
class LayeredZone {
public:
LayeredZone(std::shared_ptr zone) : zone(zone), id(zone->getID()), volume(zone->getVolumeEstimate()) {}
diff --git a/libraries/entities/src/EntityDynamicInterface.cpp b/libraries/entities/src/EntityDynamicInterface.cpp
index 69d771db22..9c73217bef 100644
--- a/libraries/entities/src/EntityDynamicInterface.cpp
+++ b/libraries/entities/src/EntityDynamicInterface.cpp
@@ -130,8 +130,8 @@ variables. These argument variables are used by the code which is run when bull
* "ball-socket" | Object constraint |
* Connects two entities with a ball and socket joint. |
* {@link Entities.ActionArguments-BallSocket} |
- * "spring" | Synonym for "tractor" .
- * Deprecated. |
+ * "spring" | | Synonym for "tractor" .
+ * Deprecated. | |
* | |
*
* @typedef {string} Entities.ActionType
diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp
index 5cb5ddbbfa..2b8f2b4c14 100644
--- a/libraries/entities/src/EntityItemProperties.cpp
+++ b/libraries/entities/src/EntityItemProperties.cpp
@@ -940,7 +940,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
* @property {number} materialMappingRot=0 - How much to rotate the material within the parent's UV-space, in degrees.
* @property {boolean} materialRepeat=true - true if the material repeats, false if it doesn't. If
* false , fragments outside of texCoord 0 – 1 will be discarded. Works in both "uv" and
- * "projected" modes.
+ * "projected" modes.
* @example Color a sphere using a Material entity.
* var entityID = Entities.addEntity({
* type: "Sphere",
@@ -1213,10 +1213,10 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
* dimensions / voxelVolumesize .
* @property {string} voxelData="ABAAEAAQAAAAHgAAEAB42u3BAQ0AAADCoPdPbQ8HFAAAAPBuEAAAAQ==" - Base-64 encoded compressed dump of
* the PolyVox data. This property is typically not used in scripts directly; rather, functions that manipulate a PolyVox
- * entity update it.
- * The size of this property increases with the size and complexity of the PolyVox entity, with the size depending on how
+ * entity update it.
+ * The size of this property increases with the size and complexity of the PolyVox entity, with the size depending on how
* the particular entity's voxels compress. Because this property value has to fit within a High Fidelity datagram packet,
- * there is a limit to the size and complexity of a PolyVox entity; edits which would result in an overflow are rejected.
+ * there is a limit to the size and complexity of a PolyVox entity; edits which would result in an overflow are rejected.
* @property {Entities.PolyVoxSurfaceStyle} voxelSurfaceStyle=2 - The style of rendering the voxels' surface and how
* neighboring PolyVox entities are joined.
* @property {string} xTextureURL="" - The URL of the texture to map to surfaces perpendicular to the entity's local x-axis.
@@ -1305,7 +1305,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
* @property {number} bottomMargin=0.0 - The bottom margin, in meters.
* @property {boolean} unlit=false - true if the entity is unaffected by lighting, false if it is lit
* by the key light and local lights.
- * @property {string} font="" - The font to render the text with. It can be one of the following: "Courier" "Courier",
* "Inconsolata" , "Roboto" , "Timeless" , or a path to a .sdff file.
* @property {Entities.TextEffect} textEffect="none" - The effect that is applied to the text.
* @property {Color} textEffectColor=255,255,255 - The color of the effect.
diff --git a/libraries/entities/src/EntityScriptingInterface.h b/libraries/entities/src/EntityScriptingInterface.h
index 8aba6b787f..fb1ec56503 100644
--- a/libraries/entities/src/EntityScriptingInterface.h
+++ b/libraries/entities/src/EntityScriptingInterface.h
@@ -1872,7 +1872,7 @@ public slots:
/**jsdoc
* Called when a {@link Entities.getMeshes} call is complete.
* @callback Entities~getMeshesCallback
- * @param {MeshProxy[]} meshes - If success< is true , a {@link MeshProxy} per mesh in the
+ * @param {MeshProxy[]} meshes - If success is true , a {@link MeshProxy} per mesh in the
* Model or PolyVox entity; otherwise undefined .
* @param {boolean} success - true if the {@link Entities.getMeshes} call was successful, false
* otherwise. The call may be unsuccessful if the requested entity could not be found.
diff --git a/libraries/entities/src/EntityTypes.h b/libraries/entities/src/EntityTypes.h
index 4106eb8054..7f72c3f761 100644
--- a/libraries/entities/src/EntityTypes.h
+++ b/libraries/entities/src/EntityTypes.h
@@ -46,18 +46,18 @@ public:
* See also, the "Box" and "Sphere" entity types.
* {@link Entities.EntityProperties-Shape|EntityProperties-Shape} |
* "Box" | A rectangular prism. This is a synonym of "Shape" for the case
- * where the entity's shape property value is "Cube" .
- * If an entity is created with its type
+ * where the entity's shape property value is "Cube" .
+ * If an entity is created with its type
* set to "Box" it will always be created with a shape property value of
* "Cube" . If an entity of type Shape or Sphere has its shape set
- * to "Cube" then its type will be reported as "Box" .
+ * to "Cube" then its type will be reported as "Box" . |
* {@link Entities.EntityProperties-Box|EntityProperties-Box} |
* "Sphere" | A sphere. This is a synonym of "Shape" for the case
- * where the entity's shape property value is "Sphere" .
- * If an entity is created with its type
+ * where the entity's shape property value is "Sphere" .
+ * If an entity is created with its type
* set to "Sphere" it will always be created with a shape property value of
* "Sphere" . If an entity of type Box or Shape has its shape set
- * to "Sphere" then its type will be reported as "Sphere" .
+ * to "Sphere" then its type will be reported as "Sphere" . |
* {@link Entities.EntityProperties-Sphere|EntityProperties-Sphere} |
* "Model" | A mesh model from a glTF, FBX, or OBJ file. |
* {@link Entities.EntityProperties-Model|EntityProperties-Model} |
diff --git a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp
index 0a6c76e456..b1746951bb 100755
--- a/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp
+++ b/libraries/input-plugins/src/input-plugins/KeyboardMouseDevice.cpp
@@ -225,7 +225,7 @@ controller::Input KeyboardMouseDevice::InputDevice::makeInput(KeyboardMouseDevic
*
*
*
- * Property | Type | Data | Description |
+ * Property | Type | Data | Description |
*
*
* 0 – 9 | number | number | A "0" – "1" key on the
@@ -275,13 +275,15 @@ controller::Input KeyboardMouseDevice::InputDevice::makeInput(KeyboardMouseDevic
* | MouseWheelLeft | number | number | The mouse wheel rotated left. The data value
* is the number of units rotated (typically 1.0 ). |
* MouseWheelUp | number | number | The mouse wheel rotated up. The data value
- * is the number of units rotated (typically 1.0 ).
- * Warning: The mouse wheel in an ordinary mouse generates left/right wheel events instead of
- * up/down. |
+ * is the number of units rotated (typically 1.0 ).
+ * Warning: The mouse wheel in an ordinary mouse generates left/right wheel events instead of
+ * up/down.
+ *
* MouseWheelDown | number | number | The mouse wheel rotated down. The data value
- * is the number of units rotated (typically 1.0 ).
- * Warning: The mouse wheel in an ordinary mouse generates left/right wheel events instead of
- * up/down. |
+ * is the number of units rotated (typically 1.0 ).
+ * Warning: The mouse wheel in an ordinary mouse generates left/right wheel events instead of
+ * up/down.
+ *
* TouchpadRight | number | number | The average touch on a touch-enabled device
* moved right. The data value is how far the average position of all touch points moved. |
* TouchpadLeft | number | number | The average touch on a touch-enabled device
diff --git a/libraries/midi/src/Midi.h b/libraries/midi/src/Midi.h
index dd2b5fd678..5b7c82d6da 100644
--- a/libraries/midi/src/Midi.h
+++ b/libraries/midi/src/Midi.h
@@ -23,7 +23,7 @@
/**jsdoc
* The Midi API provides the ability to connect Interface with musical instruments and other external or virtual
* devices via the MIDI protocol. For further information and examples, see the tutorial:
- * Use MIDI to Control Your Environment.
+ * Use MIDI to Control Your Environment.
*
* Note: Only works on Windows.
*
diff --git a/libraries/networking/src/AddressManager.h b/libraries/networking/src/AddressManager.h
index 8187c23f71..31bda960ec 100644
--- a/libraries/networking/src/AddressManager.h
+++ b/libraries/networking/src/AddressManager.h
@@ -188,11 +188,11 @@ public slots:
/**jsdoc
* Takes you to a specified metaverse address.
* @function location.handleLookupString
- * @param {string} address - The address to go to: a "hifi://" address, an IP address (e.g.,
- * "127.0.0.1" or "localhost" ), a domain name, a named path on a domain (starts with
- * "/" ), a position or position and orientation, or a user (starts with "@" ).
+ * @param {string} address - The address to go to: a "hifi://" address, an IP address (e.g.,
+ * "127.0.0.1" or "localhost" ), a domain name, a named path on a domain (starts with
+ * "/" ), a position or position and orientation, or a user (starts with "@" ).
* @param {boolean} [fromSuggestions=false] - Set to true if the address is obtained from the "Goto" dialog.
- * Helps ensure that user's location history is correctly maintained.
+ * Helps ensure that user's location history is correctly maintained.
*/
void handleLookupString(const QString& lookupString, bool fromSuggestions = false);
@@ -259,7 +259,7 @@ public slots:
/**jsdoc
* Checks if going back to the previous location is possible.
* @function location.canGoBack
- * @returns true if going back is possible, false if it isn't.
+ * @returns {boolean} true if going back is possible, false if it isn't.
*/
bool canGoBack() const;
diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp
index ecf2218e2f..e1b373db89 100644
--- a/libraries/networking/src/LimitedNodeList.cpp
+++ b/libraries/networking/src/LimitedNodeList.cpp
@@ -1329,7 +1329,8 @@ void LimitedNodeList::putLocalPortIntoSharedMemory(const QString key, QObject* p
qCDebug(networking) << "Wrote local listening port" << localPort << "to shared memory at key" << key;
} else {
- qWarning() << "ALERT: Failed to create and attach to shared memory to share local port with assignment-client children.";
+ qWarning() << "ALERT: Failed to create and attach to shared memory to share local port with assignment-client children:"
+ << sharedPortMem->errorString();
}
}
@@ -1337,7 +1338,8 @@ void LimitedNodeList::putLocalPortIntoSharedMemory(const QString key, QObject* p
bool LimitedNodeList::getLocalServerPortFromSharedMemory(const QString key, quint16& localPort) {
QSharedMemory sharedMem(key);
if (!sharedMem.attach(QSharedMemory::ReadOnly)) {
- qCWarning(networking) << "Could not attach to shared memory at key" << key;
+ qCWarning(networking) << "Could not attach to shared memory at key" << key
+ << ":" << sharedMem.errorString();
return false;
} else {
sharedMem.lock();
diff --git a/libraries/networking/src/MessagesClient.h b/libraries/networking/src/MessagesClient.h
index b97c6d8360..7f2714e5ea 100644
--- a/libraries/networking/src/MessagesClient.h
+++ b/libraries/networking/src/MessagesClient.h
@@ -57,10 +57,10 @@ public:
* @param {string} channel - The channel to send the message on.
* @param {string} message - The message to send.
* @param {boolean} [localOnly=false] - If false then the message is sent to all Interface, client entity,
- * server entity, and assignment client scripts in the domain.
- * If true then: if sent from an Interface or client entity script it is received by all Interface and
+ * server entity, and assignment client scripts in the domain.
+ * If true then: if sent from an Interface or client entity script it is received by all Interface and
* client entity scripts; if sent from a server entity script it is received by all entity server scripts; and if sent
- * from an assignment client script it is received only by that same assignment client script.
+ * from an assignment client script it is received only by that same assignment client script.
* @example Send and receive a message.
* // Receiving script.
* var channelName = "com.highfidelity.example.messages-example";
@@ -105,10 +105,10 @@ public:
* @param {object} data - The data to send. The data is handled as a byte stream, for example, as may be provided via a
* JavaScript Int8Array object.
* @param {boolean} [localOnly=false] - If false then the message is sent to all Interface, client entity,
- * server entity, and assignment client scripts in the domain.
- * If true then: if sent from an Interface or client entity script it is received by all Interface and
+ * server entity, and assignment client scripts in the domain.
+ * If true then: if sent from an Interface or client entity script it is received by all Interface and
* client entity scripts; if sent from a server entity script it is received by all entity server scripts; and if sent
- * from an assignment client script it is received only by that same assignment client script.
+ * from an assignment client script it is received only by that same assignment client script.
* @example Send and receive data.
* // Receiving script.
* var channelName = "com.highfidelity.example.messages-example";
diff --git a/libraries/script-engine/src/Quat.h b/libraries/script-engine/src/Quat.h
index 0a5e58ac26..44abe62b24 100644
--- a/libraries/script-engine/src/Quat.h
+++ b/libraries/script-engine/src/Quat.h
@@ -223,7 +223,7 @@ public slots:
/**jsdoc
* Gets the "front" direction that the camera would face if its orientation was set to the quaternion value.
* This is a synonym for {@link Quat(0).getForward|Quat.getForward}.
- * The High Fidelity camera has axes x = right, y = up, -z = forward.
+ * The High Fidelity camera has axes x = right, y = up, -z = forward.
* @function Quat(0).getFront
* @param {Quat} orientation - A quaternion representing an orientation.
* @returns {Vec3} The negative z-axis rotated by orientation .
@@ -233,7 +233,7 @@ public slots:
/**jsdoc
* Gets the "forward" direction that the camera would face if its orientation was set to the quaternion value.
* This is a synonym for {@link Quat(0).getFront|Quat.getFront}.
- * The High Fidelity camera has axes x = right, y = up, -z = forward.
+ * The High Fidelity camera has axes x = right, y = up, -z = forward.
* @function Quat(0).getForward
* @param {Quat} orientation - A quaternion representing an orientation.
* @returns {Vec3} The negative z-axis rotated by orientation .
@@ -245,7 +245,7 @@ public slots:
/**jsdoc
* Gets the "right" direction that the camera would have if its orientation was set to the quaternion value.
- * The High Fidelity camera has axes x = right, y = up, -z = forward.
+ * The High Fidelity camera has axes x = right, y = up, -z = forward.
* @function Quat(0).getRight
* @param {Quat} orientation - A quaternion representing an orientation.
* @returns {Vec3} The x-axis rotated by orientation .
@@ -254,7 +254,7 @@ public slots:
/**jsdoc
* Gets the "up" direction that the camera would have if its orientation was set to the quaternion value.
- * The High Fidelity camera has axes x = right, y = up, -z = forward.
+ * The High Fidelity camera has axes x = right, y = up, -z = forward.
* @function Quat(0).getUp
* @param {Quat} orientation - A quaternion representing an orientation.
* @returns {Vec3} The y-axis rotated by orientation .
@@ -405,8 +405,9 @@ public slots:
void print(const QString& label, const glm::quat& q, bool asDegrees = false);
/**jsdoc
- * Tests whether two quaternions are equal. Note: The quaternions must be exactly equal in order for
- * true to be returned; it is often better to use {@link Quat(0).dot|Quat.dot} and test for closeness to +/-1.
+ * Tests whether two quaternions are equal.
+ * Note: The quaternions must be exactly equal in order for true to be returned; it is
+ * often better to use {@link Quat(0).dot|Quat.dot} and test for closeness to +/-1.
* @function Quat(0).equal
* @param {Quat} q1 - The first quaternion.
* @param {Quat} q2 - The second quaternion.
diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp
index 8337d1911a..4cf4a9fc42 100644
--- a/libraries/script-engine/src/ScriptEngine.cpp
+++ b/libraries/script-engine/src/ScriptEngine.cpp
@@ -1027,8 +1027,8 @@ void ScriptEngine::addEventHandler(const EntityItemID& entityID, const QString&
};
/**jsdoc
- * The name of an entity event. When the entity event occurs, any function that has been registered for that event via
- * {@link Script.addEventHandler} is called with parameters per the entity event.
+ * The name of an entity event. When the entity event occurs, any function that has been registered for that event via
+ * {@link Script.addEventHandler} is called with parameters per the entity event.
*
*
* Event Name | Entity Event |
diff --git a/libraries/ui/src/ui/TabletScriptingInterface.h b/libraries/ui/src/ui/TabletScriptingInterface.h
index ab51bf203c..88d4ebe267 100644
--- a/libraries/ui/src/ui/TabletScriptingInterface.h
+++ b/libraries/ui/src/ui/TabletScriptingInterface.h
@@ -69,7 +69,7 @@ class TabletScriptingInterface : public QObject, public Dependency {
public:
/**jsdoc
- * Standard tablet sounds.
+ * Standard tablet sounds.
*
*
* Value | Description |
diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js
index 6f0dd40493..7f78d2477f 100644
--- a/scripts/defaultScripts.js
+++ b/scripts/defaultScripts.js
@@ -71,23 +71,63 @@ if (Menu.menuExists(MENU_CATEGORY) && !Menu.menuItemExists(MENU_CATEGORY, MENU_I
}
function loadSeparateDefaults() {
+ var currentlyRunningScripts = ScriptDiscoveryService.getRunning();
+
for (var i in DEFAULT_SCRIPTS_SEPARATE) {
- Script.load(DEFAULT_SCRIPTS_SEPARATE[i]);
+ var shouldLoadCurrentDefaultScript = true;
+
+ for (var j = 0; j < currentlyRunningScripts.length; j++) {
+ var currentRunningScriptObject = currentlyRunningScripts[j];
+ var currentDefaultScriptName = DEFAULT_SCRIPTS_SEPARATE[i].substr((DEFAULT_SCRIPTS_SEPARATE[i].lastIndexOf("/") + 1), DEFAULT_SCRIPTS_SEPARATE[i].length);
+ if (currentDefaultScriptName === currentRunningScriptObject.name) {
+ shouldLoadCurrentDefaultScript = false;
+ }
+ }
+
+ if (shouldLoadCurrentDefaultScript) {
+ Script.load(DEFAULT_SCRIPTS_SEPARATE[i]);
+ }
}
}
function runDefaultsTogether() {
- for (var i in DEFAULT_SCRIPTS_COMBINED) {
- Script.include(DEFAULT_SCRIPTS_COMBINED[i]);
+ var currentlyRunningScripts = ScriptDiscoveryService.getRunning();
+
+ for (var i = 0; i < DEFAULT_SCRIPTS_COMBINED.length; i++) {
+ var shouldIncludeCurrentDefaultScript = true;
+
+ for (var j = 0; j < currentlyRunningScripts.length; j++) {
+ var currentRunningScriptObject = currentlyRunningScripts[j];
+ var currentDefaultScriptName = DEFAULT_SCRIPTS_COMBINED[i].substr((DEFAULT_SCRIPTS_COMBINED[i].lastIndexOf("/") + 1), DEFAULT_SCRIPTS_COMBINED[i].length);
+ if (currentDefaultScriptName === currentRunningScriptObject.name) {
+ shouldIncludeCurrentDefaultScript = false;
+ }
+ }
+
+ if (shouldIncludeCurrentDefaultScript) {
+ Script.include(DEFAULT_SCRIPTS_COMBINED[i]);
+ }
}
- loadSeparateDefaults();
}
function runDefaultsSeparately() {
+ var currentlyRunningScripts = ScriptDiscoveryService.getRunning();
+
for (var i in DEFAULT_SCRIPTS_COMBINED) {
- Script.load(DEFAULT_SCRIPTS_COMBINED[i]);
+ var shouldLoadCurrentDefaultScript = true;
+
+ for (var j = 0; j < currentlyRunningScripts.length; j++) {
+ var currentRunningScriptObject = currentlyRunningScripts[j];
+ var currentDefaultScriptName = DEFAULT_SCRIPTS_COMBINED[i].substr((DEFAULT_SCRIPTS_COMBINED[i].lastIndexOf("/") + 1), DEFAULT_SCRIPTS_COMBINED[i].length);
+ if (currentDefaultScriptName === currentRunningScriptObject.name) {
+ shouldLoadCurrentDefaultScript = false;
+ }
+ }
+
+ if (shouldLoadCurrentDefaultScript) {
+ Script.load(DEFAULT_SCRIPTS_COMBINED[i]);
+ }
}
- loadSeparateDefaults();
}
// start all scripts
@@ -99,6 +139,7 @@ if (Menu.isOptionChecked(MENU_ITEM)) {
// include all default scripts into this ScriptEngine
runDefaultsTogether();
}
+loadSeparateDefaults();
function menuItemEvent(menuItem) {
if (menuItem === MENU_ITEM) {
diff --git a/scripts/system/controllers/controllerDispatcher.js b/scripts/system/controllers/controllerDispatcher.js
index cf365a4119..f0d3ec0c03 100644
--- a/scripts/system/controllers/controllerDispatcher.js
+++ b/scripts/system/controllers/controllerDispatcher.js
@@ -595,6 +595,10 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js");
Controller.disableMapping(MAPPING_NAME);
_this.pointerManager.removePointers();
Pointers.removePointer(this.mouseRayPointer);
+ Overlays.mouseReleaseOnOverlay.disconnect(mouseReleaseOnOverlay);
+ Overlays.mousePressOnOverlay.disconnect(mousePress);
+ Entities.mousePressOnEntity.disconnect(mousePress);
+ Messages.messageReceived.disconnect(controllerDispatcher.handleMessage);
};
}
diff --git a/tools/jsdoc/hifi-jsdoc-template/static/styles/jsdoc.css b/tools/jsdoc/hifi-jsdoc-template/static/styles/jsdoc.css
index 2386f88586..dd67a4da20 100644
--- a/tools/jsdoc/hifi-jsdoc-template/static/styles/jsdoc.css
+++ b/tools/jsdoc/hifi-jsdoc-template/static/styles/jsdoc.css
@@ -96,7 +96,7 @@ h6
.paramHeading, .typeDef h3.propsHeading, h3.subHeading
{
- font-size: .9rem;
+ font-size: 1rem;
font-family: "Proxima Nova";
font-weight: bold;
border-bottom: solid 1px #ddd;
@@ -108,9 +108,9 @@ h4.name
padding-bottom: 0px;
}
-h5, .container-overview .subsection-title
-{
- font-size: 13px;
+h5, .container-overview .subsection-title {
+ font-size: 1rem;
+ font-family: "Proxima Nova";
font-weight: bold;
margin-bottom: 5px;
}
@@ -143,6 +143,14 @@ td {
border: solid #c7cccb 1px;
}
+td > p:first-child, td > ul:first-child {
+ margin-top: 0;
+}
+
+td > p:last-child, td > ul:last-child {
+ margin-bottom: 0;
+}
+
article table thead tr th, article table tbody tr td, article table tbody tr td p {
font-size: .89rem;
line-height: 20px;
@@ -538,7 +546,7 @@ header {
.prettyprint code
{
- font-size: 0.9em;
+ font-size: .95em;
line-height: 18px;
display: block;
padding: 4px 12px;
@@ -596,11 +604,6 @@ header {
font-size: 100%;
}
-.params td.description > p:first-child, .props td.description > p:first-child {
- margin-top: 0;
- padding-top: 0;
-}
-
span.param-type, .params td .param-type, .param-type dd {
color: #606;
font-family: Consolas, Monaco, 'Andale Mono', monospace
diff --git a/tools/jsdoc/hifi-jsdoc-template/tmpl/container.tmpl b/tools/jsdoc/hifi-jsdoc-template/tmpl/container.tmpl
index 5c149fa434..fccf5f7d31 100644
--- a/tools/jsdoc/hifi-jsdoc-template/tmpl/container.tmpl
+++ b/tools/jsdoc/hifi-jsdoc-template/tmpl/container.tmpl
@@ -63,11 +63,13 @@
+
-
+
+
Description
-
+
@@ -75,7 +77,8 @@
Description
-
+
+
@@ -84,15 +87,15 @@
-
+ |
Parameters
+ |
-
Example 1? 's':'' ?>
@@ -101,7 +104,7 @@
Description
-
+
@@ -264,6 +267,7 @@
+
+
-
-
-
-
+
diff --git a/tools/jsdoc/hifi-jsdoc-template/tmpl/description.tmpl b/tools/jsdoc/hifi-jsdoc-template/tmpl/description.tmpl
new file mode 100644
index 0000000000..0e0ad27b37
--- /dev/null
+++ b/tools/jsdoc/hifi-jsdoc-template/tmpl/description.tmpl
@@ -0,0 +1,15 @@
+]*>', 'i');
+ var descriptionIndex = description.search(descriptionRegExp);
+?>
+
+
+
+
+
+
+
+
+
diff --git a/tools/jsdoc/hifi-jsdoc-template/tmpl/details.tmpl b/tools/jsdoc/hifi-jsdoc-template/tmpl/details.tmpl
index 0661ee3e50..afb0e9464c 100644
--- a/tools/jsdoc/hifi-jsdoc-template/tmpl/details.tmpl
+++ b/tools/jsdoc/hifi-jsdoc-template/tmpl/details.tmpl
@@ -31,113 +31,113 @@ if (data.defaultvalue && (data.defaultvaluetype === 'object' || data.defaultvalu
Version:
-
+
Since:
-
+
Inherited From:
- -
+
Overrides:
- -
+
Implementations:
-
+
Implements:
-
+
Mixes In:
-
+
Author:
-
+
Copyright:
-
+
License:
-
+
Default Value:
-
+
Source:
- -
+
Tutorials:
-
+
See:
-
+
To Do:
-
+
diff --git a/tools/jsdoc/hifi-jsdoc-template/tmpl/example.tmpl b/tools/jsdoc/hifi-jsdoc-template/tmpl/example.tmpl
index e1b06d0a46..ea70a150c5 100644
--- a/tools/jsdoc/hifi-jsdoc-template/tmpl/example.tmpl
+++ b/tools/jsdoc/hifi-jsdoc-template/tmpl/example.tmpl
@@ -29,113 +29,113 @@ if (data.defaultvalue && (data.defaultvaluetype === 'object' || data.defaultvalu
Version:
-
+
Since:
-
+
Inherited From:
- -
+
Overrides:
- -
+
Implementations:
-
+
Implements:
-
+
Mixes In:
-
+
Author:
-
+
Copyright:
-
+
License:
-
+
Default Value:
-
+
Source:
- -
+
Tutorials:
-
+
See:
-
+
To Do:
-
+
diff --git a/tools/jsdoc/hifi-jsdoc-template/tmpl/members.tmpl b/tools/jsdoc/hifi-jsdoc-template/tmpl/members.tmpl
index eef64c1f3f..6a870b4cda 100644
--- a/tools/jsdoc/hifi-jsdoc-template/tmpl/members.tmpl
+++ b/tools/jsdoc/hifi-jsdoc-template/tmpl/members.tmpl
@@ -16,7 +16,7 @@ var self = this;
-
+
diff --git a/tools/jsdoc/hifi-jsdoc-template/tmpl/method.tmpl b/tools/jsdoc/hifi-jsdoc-template/tmpl/method.tmpl
index 8db1df8a77..1542ca1806 100644
--- a/tools/jsdoc/hifi-jsdoc-template/tmpl/method.tmpl
+++ b/tools/jsdoc/hifi-jsdoc-template/tmpl/method.tmpl
@@ -12,8 +12,9 @@ var self = this;
Returns:
-
+
+
+
Type:
@@ -24,23 +25,23 @@ var self = this;
|
-
-
-
-
+
+
+
+
- Throws:
+ Throws
1) { ?>
-
+
diff --git a/tools/jsdoc/hifi-jsdoc-template/tmpl/methodList.tmpl b/tools/jsdoc/hifi-jsdoc-template/tmpl/methodList.tmpl
index 7d88cd5e51..982c231fd9 100644
--- a/tools/jsdoc/hifi-jsdoc-template/tmpl/methodList.tmpl
+++ b/tools/jsdoc/hifi-jsdoc-template/tmpl/methodList.tmpl
@@ -29,11 +29,9 @@ var self = this;
|
-
-
-
-
+
+
|
diff --git a/tools/jsdoc/hifi-jsdoc-template/tmpl/params.tmpl b/tools/jsdoc/hifi-jsdoc-template/tmpl/params.tmpl
index e994e42bfa..dd9f5f7ee7 100644
--- a/tools/jsdoc/hifi-jsdoc-template/tmpl/params.tmpl
+++ b/tools/jsdoc/hifi-jsdoc-template/tmpl/params.tmpl
@@ -120,10 +120,15 @@
-
- Properties
-
- |
+
+
+
+
+
+ Properties
+
+
+ |
diff --git a/tools/jsdoc/hifi-jsdoc-template/tmpl/properties.tmpl b/tools/jsdoc/hifi-jsdoc-template/tmpl/properties.tmpl
index 5c83a7d587..31717ed63b 100644
--- a/tools/jsdoc/hifi-jsdoc-template/tmpl/properties.tmpl
+++ b/tools/jsdoc/hifi-jsdoc-template/tmpl/properties.tmpl
@@ -87,7 +87,9 @@
-
+
+
+
Default Value:
diff --git a/tools/jsdoc/hifi-jsdoc-template/tmpl/signal.tmpl b/tools/jsdoc/hifi-jsdoc-template/tmpl/signal.tmpl
index 00bf7122e1..76d6f78948 100644
--- a/tools/jsdoc/hifi-jsdoc-template/tmpl/signal.tmpl
+++ b/tools/jsdoc/hifi-jsdoc-template/tmpl/signal.tmpl
@@ -25,23 +25,23 @@ var self = this;
|
-
-
-
-
+
+
+
+
- Throws:
+ Throws
1) { ?>
-
+
diff --git a/tools/jsdoc/hifi-jsdoc-template/tmpl/signalList.tmpl b/tools/jsdoc/hifi-jsdoc-template/tmpl/signalList.tmpl
index c5fdefc7d8..98b0892122 100644
--- a/tools/jsdoc/hifi-jsdoc-template/tmpl/signalList.tmpl
+++ b/tools/jsdoc/hifi-jsdoc-template/tmpl/signalList.tmpl
@@ -13,12 +13,10 @@ var self = this;
|
-
-
-
-
+
+
+
-
|
| | | |