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.

* * * @@ -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: + * * @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: * - * + * the avatar to sit on the floor when the user sits on the floor.

+ *

Note: Experimental.

* *
PropertyTypeDescription
2AutoInterface 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).
3DisableHMDLeanBoth avatar leaning and recentering are disabled regardless of + *
3DisableHMDLean

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.

* @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.

    * * - * + * * * * @@ -73,10 +73,10 @@ int DesktopScriptingInterface::getHeight() { * own separate window. */ /**jsdoc - * A display mode for an InteractiveWindow. + *

    A display mode for an InteractiveWindow.

    *
    ValueName

    Description
    ValueNameDescription
    0TOPDock to the top edge of the Interface window.
    * - * + * * * * * * - * + * * * * @@ -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.01.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.

    *
    ValueName

    Description
    ValueNameDescription
    0VIRTUALThe 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.

    * * * 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 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 * 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.

    *
    ValueDescription
    Check the ownership of all nearby certified avatar entities.Using the snapshot function and signals.
    * * 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) { * * * - * + * * * - * + * * * - * + * * * - * + * * * - * + * * * - * + * * * - * + * * * - * + * * * - * + * * * - * + * * * - * + * * * *
    Flag NameValueDescription
    Some text.{@link Overlays.OverlayProperties-Text|OverlayProperties-Text}
    "cube"3DA 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"3DA 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"3DA 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"3DA model.
    - * Deprecated.

    A model.

    + *

    Deprecated.

    {@link Overlays.OverlayProperties-Model|OverlayProperties-Model}
    "image3d"3DAn image. Synonym: "billboard".
    - * Deprecated.

    An image. Synonym: "billboard".

    + *

    Deprecated.

    {@link Overlays.OverlayProperties-Image3D|OverlayProperties-Image3D}
    "rectangle3d"3DA rectangle.
    - * Deprecated.

    A rectangle.

    + *

    Deprecated.

    {@link Overlays.OverlayProperties-Rectangle3D|OverlayProperties-Rectangle3D}
    "text3d"3DSome text.
    - * Deprecated.

    Some text.

    + *

    Deprecated.

    {@link Overlays.OverlayProperties-Text3D|OverlayProperties-Text3D}
    "web3d"3DWeb content.
    - * Deprecated.

    Web content.

    + *

    Deprecated.

    {@link Overlays.OverlayProperties-Web3D|OverlayProperties-Web3D}
    "line3d"3DA line.
    - * Deprecated.

    A line.

    + *

    Deprecated.

    {@link Overlays.OverlayProperties-Line3D|OverlayProperties-Line3D}
    "grid"3DA grid of lines in a plane.
    - * Deprecated.

    A grid of lines in a plane.

    + *

    Deprecated.

    {@link Overlays.OverlayProperties-Grid|OverlayProperties-Grid}
    "circle3d"3DA 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) { *
    ValueDimensionsDescription
    "Circle"2DA circle oriented in 3D.
    "Circle"2DA circle oriented in 3D.
    "Cone"3D
    "Cube"3D
    "Cylinder"3D
    * - * + * * * * - * + * * 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 @@ - + 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 @@
    ValueName

    Description
    ValueNameDescription
    0RelaxToUnderPosesThis is a blend: it is 15/16 PreviousSolution @@ -73,12 +73,14 @@ public: *
    1RelaxToLimitCenterPosesThis 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.
    2PreviousSolutionThe 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.
    2PreviousSolution + *

    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.

    + *
    3UnderPosesThe 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.

    * * - * + * * * * 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.

    *
    ValueName

    Description
    ValueNameDescription
    0FullBodyBoneSetAll joints.
    * - * + * * * * * - * * 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. *

    ValueName

    Description
    ValueNameDescription
    0RotationAndPositionAttempt to reach the rotation and position end * effector.
    1RotationOnlyAttempt to reach the end effector rotation only.
    2HmdHeadA special mode of IK that would attempt to prevent unnecessary - * bending of the spine.
    + *
    2HmdHead + *

    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.

    3HipsRelativeRotationAndPositionAttempt to reach a rotation and position end * effector that is not in absolute rig coordinates but is offset by the avatar hips translation.
    * - * + * * * * * 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. * * * * * * * 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 * *
    NameType

    Description
    NameTypeDescription
    userAnimNonebooleantrue 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 { * * * - * + * * * * * - * + * * * * - * + * * * * - * + * * * * - * + * * * * - * + * * * * - * + * * * * * - * + * * *
    PropertyTypeDataDescription
    Avatar Movement
    Avatar Movement
    TranslateXnumbernumberMove the user's avatar in the direction of its * x-axis, if the camera isn't in independent or mirror modes.
    TranslateYnumbernumberMove 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.
    StepRollnumbernumberNo action.
    Avatar Skeleton
    Avatar Skeleton
    Hipsnumber{@link Pose}Set the hips pose of the user's avatar. *
    Spine2number{@link Pose}Set the spine2 pose of the user's avatar. @@ -171,7 +171,7 @@ namespace controller { *
    RightFootnumber{@link Pose}Set the right foot pose of the user's * avatar.
    Application
    Application
    BoomInnumbernumberZoom camera in from third person toward first * person view.
    BoomOutnumbernumberZoom camera out from first person to third @@ -212,7 +212,7 @@ namespace controller { *
    SecondaryActionnumbernumberDeprecated: This * action is deprecated and will be removed. It takes no action.
    Aliases
    Aliases
    BackwardnumbernumberAlias for TranslateZ in the * positive direction.
    ForwardnumbernumberAlias for TranslateZ in the negative @@ -234,7 +234,7 @@ namespace controller { *
    YawRightnumbernumberAlias for Yaw in the negative * direction.
    Deprecated Aliases
    Deprecated Aliases
    LEFT_HANDnumber{@link Pose}Deprecated: This * action is deprecated and will be removed. Use LeftHand instead.
    RIGHT_HANDnumber{@link Pose}Deprecated: This @@ -282,7 +282,7 @@ namespace controller { *
    ACTION2numbernumberDeprecated: This * action is deprecated and will be removed. Use SecondaryAction instead.
    Deprecated Trackers
    Deprecated Trackers
    TrackedObject00number{@link Pose}Deprecated: * This action is deprecated and will be removed. It takes no action.
    TrackedObject01number{@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.01.0 for unidirectional scales, and the range * -1.01.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.

    RightThumbUpnumbernumberRight thumb not touching primary or secondary * thumb buttons.
    LeftPrimaryIndexnumbernumberLeft primary index control - * pressed.
    LeftPrimaryIndexnumbernumberLeft primary index control pressed.
    LeftSecondaryIndexnumbernumberLeft secondary index control pressed. *
    RightPrimaryIndexnumbernumberRight 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 constraintConnects 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.
    {@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}
    * - * + * * * * * + * 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.

    + * * * * // 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 * // 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.

    *
    PropertyTypeDataDescription
    PropertyTypeDataDescription
    09numbernumberA "0" – "1" key on the @@ -275,13 +275,15 @@ controller::Input KeyboardMouseDevice::InputDevice::makeInput(KeyboardMouseDevic *
    MouseWheelLeftnumbernumberThe mouse wheel rotated left. The data value * is the number of units rotated (typically 1.0).
    MouseWheelUpnumbernumberThe 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.
    MouseWheelDownnumbernumberThe 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.
    TouchpadRightnumbernumberThe average touch on a touch-enabled device * moved right. The data value is how far the average position of all touch points moved.
    TouchpadLeftnumbernumberThe 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.Send and receive data.
    * * 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.

    *
    Event NameEntity Event
    * * 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

    -

    +
    +
    ValueDescription
    @@ -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;
    - - - - + +
    -
    Properties
    - -
    + + + + +
    Properties
    + + +
    - + + +

    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;
    - - - - + + + -