diff --git a/assignment-client/src/avatars/ScriptableAvatar.h b/assignment-client/src/avatars/ScriptableAvatar.h index f2f5a1e6f4..47f61a2b64 100644 --- a/assignment-client/src/avatars/ScriptableAvatar.h +++ b/assignment-client/src/avatars/ScriptableAvatar.h @@ -76,6 +76,22 @@ * size in the virtual world. Read-only. * @property {boolean} hasPriority - true if the avatar is in a "hero" zone, false if it isn't. * Read-only. + * @property {boolean} hasScriptedBlendshapes=false - true if blend shapes are controlled by scripted actions, + * otherwise false. Set this to true before using the {@link MyAvatar.setBlendshape} method, + * and set back to false after you no longer want scripted control over the blend shapes. + *

Note: This property will automatically be set to true if the Controller system has valid facial + * blend shape actions.

+ * @property {boolean} hasProceduralBlinkFaceMovement=true - true if avatars blink automatically by animating + * facial blend shapes, false if automatic blinking is disabled. Set this property to false if + * you wish to fully control the blink facial blend shapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasProceduralEyeFaceMovement=true - true if the facial blend shapes for an avatar's eyes + * adjust automatically as the eyes move, false if this automatic movement is disabled. Set this property + * to true to prevent the iris from being obscured by the upper or lower lids. Set this property to + * false if you wish to fully control the eye blend shapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasAudioEnabledFaceMovement=true - true if the avatar's mouth blend shapes animate + * automatically based on detected microphone input, false if this automatic movement is disabled. Set + * this property to false if you wish to fully control the mouth facial blend shapes via the + * {@link MyAvatar.setBlendshape} method. * * @example Create a scriptable avatar. * (function () { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index cac9f54be5..cc12e4fcee 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -148,6 +148,22 @@ class MyAvatar : public Avatar { * size in the virtual world. Read-only. * @property {boolean} hasPriority - true if the avatar is in a "hero" zone, false if it isn't. * Read-only. + * @property {boolean} hasScriptedBlendshapes=false - true if blend shapes are controlled by scripted actions, + * otherwise false. Set this to true before using the {@link MyAvatar.setBlendshape} method, + * and set back to false after you no longer want scripted control over the blend shapes. + *

Note: This property will automatically be set to true if the Controller system has valid facial + * blend shape actions.

+ * @property {boolean} hasProceduralBlinkFaceMovement=true - true if avatars blink automatically by animating + * facial blend shapes, false if automatic blinking is disabled. Set this property to false if + * you wish to fully control the blink facial blend shapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasProceduralEyeFaceMovement=true - true if the facial blend shapes for an avatar's eyes + * adjust automatically as the eyes move, false if this automatic movement is disabled. Set this property + * to true to prevent the iris from being obscured by the upper or lower lids. Set this property to + * false if you wish to fully control the eye blend shapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasAudioEnabledFaceMovement=true - true if the avatar's mouth blend shapes animate + * automatically based on detected microphone input, false if this automatic movement is disabled. Set + * this property to false if you wish to fully control the mouth facial blend shapes via the + * {@link MyAvatar.setBlendshape} method. * * @comment IMPORTANT: This group of properties is copied from Avatar.h; they should NOT be edited here. * @property {Vec3} skeletonOffset - Can be used to apply a translation offset between the avatar's position and the @@ -1746,7 +1762,7 @@ public: void prepareAvatarEntityDataForReload(); /**jsdoc - * Turn the avatar's head until it faces the target point within the 90/-90 degree range. + * Turns the avatar's head until it faces the target point within a +90/-90 degree range. * Once this method is called, API calls will have full control of the head for a limited time. * If this method is not called for two seconds, the engine will regain control of the head. * @function MyAvatar.setHeadLookAt @@ -1755,47 +1771,46 @@ public: Q_INVOKABLE void setHeadLookAt(const glm::vec3& lookAtTarget); /**jsdoc - * Returns the current head look at target point in world coordinates. + * Returns the current target point of the head's look direction in world coordinates. * @function MyAvatar.getHeadLookAt - * @returns {Vec3} The head's look at target in world coordinates. + * @returns {Vec3} The head's "look at" target in world coordinates. */ Q_INVOKABLE glm::vec3 getHeadLookAt() { return _lookAtCameraTarget; } /**jsdoc - * When this function is called the engine regains control of the head immediately. + * Returns control of the avatar's head to the engine, and releases control from API calls. * @function MyAvatar.releaseHeadLookAtControl */ Q_INVOKABLE void releaseHeadLookAtControl(); /**jsdoc - * Force the avatar's eyes to look to the specified location. - * Once this method is called, API calls will have full control of the eyes for a limited time. - * If this method is not called for two seconds, the engine will regain control of the eyes. + * Forces the avatar's eyes to look at a specified location. Once this method is called, API calls + * have full control of the eyes for a limited time. If this method is not called for two seconds, + * the engine regains control of the eyes. * @function MyAvatar.setEyesLookAt * @param {Vec3} lookAtTarget - The target point in world coordinates. */ Q_INVOKABLE void setEyesLookAt(const glm::vec3& lookAtTarget); /**jsdoc - * Returns the current eyes look at target point in world coordinates. + * Returns the current target point of the eyes look direction in world coordinates. * @function MyAvatar.getEyesLookAt - * @returns {Vec3} The eyes's look at target in world coordinates. + * @returns {Vec3} The eyes' "look at" target in world coordinates. */ Q_INVOKABLE glm::vec3 getEyesLookAt() { return _eyesLookAtTarget.get(); } /**jsdoc - * When this function is called the engine regains control of the eyes immediately. + * Returns control of the avatar's eyes to the engine, and releases control from API calls. * @function MyAvatar.releaseEyesLookAtControl */ Q_INVOKABLE void releaseEyesLookAtControl(); /**jsdoc - * Aims the pointing directional blending towards the provided target point. - * The "point" reaction should be triggered before using this method. - * MyAvatar.beginReaction("point") - * Returns true if the target point lays in front of the avatar. + * Aims the pointing directional blending towards the provided target point. The "point" reaction should be triggered + * before using this method with the code MyAvatar.beginReaction("point"). * @function MyAvatar.setPointAt * @param {Vec3} pointAtTarget - The target point in world coordinates. + * @returns {boolean} true if the target point lays in front of the avatar, false if it doesn't. */ Q_INVOKABLE bool setPointAt(const glm::vec3& pointAtTarget); @@ -1899,7 +1914,7 @@ public: Q_INVOKABLE QVariantList getCollidingFlowJoints(); /**jsdoc - * Starts a sitting action for the avatar + * Starts a sitting action for the avatar. * @function MyAvatar.beginSit * @param {Vec3} position - The point in space where the avatar will sit. * @param {Quat} rotation - Initial absolute orientation of the avatar once is seated. @@ -1907,7 +1922,7 @@ public: Q_INVOKABLE void beginSit(const glm::vec3& position, const glm::quat& rotation); /**jsdoc - * Ends a sitting action for the avatar + * Ends a sitting action for the avatar. * @function MyAvatar.endSit * @param {Vec3} position - The position of the avatar when standing up. * @param {Quat} rotation - The absolute rotation of the avatar once the sitting action ends. diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 3a7b67a8e9..1f940f761d 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -99,9 +99,11 @@ PickFilter getPickFilter(unsigned int filter) { * @property {Vec3} [dirOffset] - Synonym for direction. * @property {Quat} [orientation] - Alternative property for specifying direction. The value is applied to the * default direction value. - * @property {PickType} pickType - The type of pick when getting these properties from {@link Picks.getPickProperties} or {@link Picks.getPickScriptParameters}. A ray pick's type is {@link PickType.Ray}. - * @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 scale 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 ray pick's type is {@link PickType.Ray}. + * @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 scale the pointer which owns this pick, if any. */ std::shared_ptr PickScriptingInterface::buildRayPick(const QVariantMap& propMap) { #if defined (Q_OS_ANDROID) @@ -170,7 +172,8 @@ std::shared_ptr PickScriptingInterface::buildRayPick(const QVariantMa * means no maximum. * @property {Vec3} [tipOffset=0,0.095,0] - The position of the stylus tip relative to the hand position at default avatar * scale. - * @property {PickType} pickType - The type of pick when getting these properties from {@link Picks.getPickProperties} or {@link Picks.getPickScriptParameters}. A stylus pick's type is {@link PickType.Stylus}. + * @property {PickType} pickType - The type of pick when getting these properties from {@link Picks.getPickProperties} or + * {@link Picks.getPickScriptParameters}. A stylus pick's type is {@link PickType.Stylus}. */ std::shared_ptr PickScriptingInterface::buildStylusPick(const QVariantMap& propMap) { bilateral::Side side = bilateral::Side::Invalid; @@ -204,7 +207,8 @@ std::shared_ptr PickScriptingInterface::buildStylusPick(const QVarian return std::make_shared(side, filter, maxDistance, enabled, tipOffset); } -// NOTE: Laser pointer still uses scaleWithAvatar. Until scaleWithAvatar is also deprecated for pointers, scaleWithAvatar should not be removed from the pick API. +// NOTE: Laser pointer still uses scaleWithAvatar. Until scaleWithAvatar is also deprecated for pointers, scaleWithAvatar +// should not be removed from the pick API. /**jsdoc * The properties of a parabola pick. * @@ -245,9 +249,11 @@ std::shared_ptr PickScriptingInterface::buildStylusPick(const QVarian * with the avatar or other parent. * @property {boolean} [scaleWithAvatar=true] - Synonym for scalewithParent. *

Deprecated: This property is deprecated and will be removed.

- * @property {PickType} pickType - The type of pick when getting these properties from {@link Picks.getPickProperties} or {@link Picks.getPickScriptParameters}. A parabola pick's type is {@link PickType.Parabola}. - * @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 parabola pick's type is {@link PickType.Parabola}. + * @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 the pointer which owns this pick, if any. */ std::shared_ptr PickScriptingInterface::buildParabolaPick(const QVariantMap& propMap) { bool enabled = false; diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 11d77d9b49..6319aeb01b 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -152,19 +152,20 @@ public: * Gets the current properties of the pick. * @function Picks.getPickProperties * @param {number} id - The ID of the pick. - * @returns {Picks.RayPickProperties|Picks.ParabolaPickProperties|Picks.StylusPickProperties|Picks.CollisionPickProperties} Properties of the pick, per the pick type. + * @returns {Picks.RayPickProperties|Picks.ParabolaPickProperties|Picks.StylusPickProperties|Picks.CollisionPickProperties} + * Properties of the pick, per the pick type. */ Q_INVOKABLE QVariantMap getPickProperties(unsigned int uid) const; /**jsdoc - * Gets the parameters that were passed in to {@link Picks.createPick} to create the pick, - * if the pick was created through a script. - * Note that these properties do not reflect the current state of the pick. - * See {@link Picks.getPickProperties}. - * @function Picks.getPickScriptParameters - * @param {number} id - The ID of the pick. - * @returns {Picks.RayPickProperties|Picks.ParabolaPickProperties|Picks.StylusPickProperties|Picks.CollisionPickProperties} User-provided properties, per the pick type. - */ + * Gets the parameters that were passed in to {@link Picks.createPick} to create the pick, if the pick was created through + * a script. Note that these properties do not reflect the current state of the pick. + * See {@link Picks.getPickProperties}. + * @function Picks.getPickScriptParameters + * @param {number} id - The ID of the pick. + * @returns {Picks.RayPickProperties|Picks.ParabolaPickProperties|Picks.StylusPickProperties|Picks.CollisionPickProperties} + * Script-provided properties, per the pick type. + */ Q_INVOKABLE QVariantMap getPickScriptParameters(unsigned int uid) const; /**jsdoc diff --git a/interface/src/raypick/PointerScriptingInterface.cpp b/interface/src/raypick/PointerScriptingInterface.cpp index 3520aacbd0..a3aeb314e5 100644 --- a/interface/src/raypick/PointerScriptingInterface.cpp +++ b/interface/src/raypick/PointerScriptingInterface.cpp @@ -89,10 +89,13 @@ QVariantMap PointerScriptingInterface::getPointerScriptParameters(unsigned int u * @property {Pointers.StylusPointerModel} [model] - Override some or all of the default stylus model properties. * @property {boolean} [hover=false] - true if the pointer generates {@link Entities} hover events, * false if it doesn't. - * @property {PickType} pointerType - The type of pointer when getting these properties from {@link Pointers.getPointerProperties} or {@link Pointers.getPointerScriptParameters}. A stylus pointer's type is {@link PickType.Stylus}. - * @property {number} [pickID] - Returned from {@link Pointers.getPointerProperties}. The ID of the pick created alongside this pointer. + * @property {PickType} pointerType - The type of the stylus pointer returned from {@link Pointers.getPointerProperties} + * or {@link Pointers.getPointerScriptParameters}. A stylus pointer's type is {@link PickType(0)|PickType.Stylus}. + * @property {number} [pickID] - The ID of the pick created alongside this pointer, returned from + * {@link Pointers.getPointerProperties}. * @see {@link Picks.StylusPickProperties} for additional properties from the underlying stylus pick. */ + /**jsdoc * The properties of a stylus pointer model. * @typedef {object} Pointers.StylusPointerModel @@ -208,8 +211,10 @@ std::shared_ptr PointerScriptingInterface::buildStylus(const QVariant& * false if it doesn't. * @property {Pointers.Trigger[]} [triggers=[]] - A list of ways that a {@link Controller} action or function should trigger * events on the entity or overlay currently intersected. - * @property {PickType} pointerType - The type of pointer when getting these properties from {@link Pointers.getPointerProperties} or {@link Pointers.getPointerScriptParameters}. A laser pointer's type is {@link PickType.Ray}. - * @property {number} [pickID] - Returned from {@link Pointers.getPointerProperties}. The ID of the pick created alongside this pointer. + * @property {PickType} pointerType - The type of pointer returned from {@link Pointers.getPointerProperties} or + * {@link Pointers.getPointerScriptParameters}. A laser pointer's type is {@link PickType(0)|PickType.Ray}. + * @property {number} [pickID] - The ID of the pick created alongside this pointer, returned from + * {@link Pointers.getPointerProperties}. * @see {@link Picks.RayPickProperties} for additional properties from the underlying ray pick. */ std::shared_ptr PointerScriptingInterface::buildLaserPointer(const QVariant& properties) { @@ -401,8 +406,10 @@ std::shared_ptr PointerScriptingInterface::buildLaserPointer(const QVar * false if it doesn't. * @property {Pointers.Trigger[]} [triggers=[]] - A list of ways that a {@link Controller} action or function should trigger * events on the entity or overlay currently intersected. - * @property {PickType} pointerType - The type of pointer when getting these properties from {@link Pointers.getPointerProperties} or {@link Pointers.getPointerScriptParameters}. A parabola pointer's type is {@link PickType.Parabola}. - * @property {number} [pickID] - Returned from {@link Pointers.getPointerProperties}. The ID of the pick created alongside this pointer. + * @property {PickType} pointerType - The type of pointer returned from {@link Pointers.getPointerProperties} or + * {@link Pointers.getPointerScriptParameters}. A parabola pointer's type is {@link PickType(0)|PickType.Parabola}. + * @property {number} [pickID] - The ID of the pick created alongside this pointer, returned from + * {@link Pointers.getPointerProperties}. * @see {@link Picks.ParabolaPickProperties} for additional properties from the underlying parabola pick. */ std::shared_ptr PointerScriptingInterface::buildParabolaPointer(const QVariant& properties) { diff --git a/interface/src/raypick/PointerScriptingInterface.h b/interface/src/raypick/PointerScriptingInterface.h index 2d2f3f6dae..4e59e53b06 100644 --- a/interface/src/raypick/PointerScriptingInterface.h +++ b/interface/src/raypick/PointerScriptingInterface.h @@ -161,13 +161,14 @@ public: Q_INVOKABLE void removePointer(unsigned int uid) const { DependencyManager::get()->removePointer(uid); } /**jsdoc - * Gets the parameters that were passed in to {@link Pointers.createPointer} to create the pointer, - * if the pointer was created through a script. - * Note that these properties do not reflect the current state of the pointer. - * See {@link Pointers.getPointerProperties}. + * Gets the parameters that were passed in to {@link Pointers.createPointer} to create the pointer when the pointer was + * created through a script. + *

Note: These properties do not reflect the current state of the pointer. To get the current state + * of the pointer, see {@link Pointers.getPointerProperties}. * @function Pointers.getPointerScriptParameters * @param {number} id - The ID of the pointer. - * @returns {Pointers.RayPointerProperties|Picks.ParabolaPointerProperties|Picks.StylusPointerProperties} User-provided properties, per the pointer type. + * @returns {Pointers.RayPointerProperties|Picks.ParabolaPointerProperties|Picks.StylusPointerProperties} + * Script-provided properties, per the pointer type. */ Q_INVOKABLE QVariantMap getPointerScriptParameters(unsigned int uid) const; diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 21779a2b29..fd15273e15 100755 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -532,19 +532,22 @@ class AvatarData : public QObject, public SpatiallyNestable { * size in the virtual world. Read-only. * @property {boolean} hasPriority - true if the avatar is in a "hero" zone, false if it isn't. * Read-only. - * @property {boolean} hasScriptedBlendshapes=false - Set this to true before using the {@link MyAvatar.setBlendshape} method, - * after you no longer want scripted control over the blendshapes set to back to false.
NOTE: this property will - * automatically become true if the Controller system has valid facial blendshape actions. - * @property {boolean} hasProceduralBlinkFaceMovement=true - By default avatars will blink automatically by animating facial - * blendshapes. Set this property to false to disable this automatic blinking. This can be useful if you - * wish to fully control the blink facial blendshapes via the {@link MyAvatar.setBlendshape} method. - * @property {boolean} hasProceduralEyeFaceMovement=true - By default the avatar eye facial blendshapes will be adjusted - * automatically as the eyes move. This will prevent the iris is never obscured by the upper or lower lids. Set this - * property to false to disable this automatic movement. This can be useful if you wish to fully control - * the eye blendshapes via the {@link MyAvatar.setBlendshape} method. - * @property {boolean} hasAudioEnabledFaceMovement=true - By default the avatar mouth blendshapes will animate based on - * the microphone audio. Set this property to false to disable that animaiton. This can be useful if you - * wish to fully control the blink facial blendshapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasScriptedBlendshapes=false - true if blend shapes are controlled by scripted actions, + * otherwise false. Set this to true before using the {@link MyAvatar.setBlendshape} method, + * and set back to false after you no longer want scripted control over the blend shapes. + *

Note: This property will automatically be set to true if the Controller system has valid facial + * blend shape actions.

+ * @property {boolean} hasProceduralBlinkFaceMovement=true - true if avatars blink automatically by animating + * facial blend shapes, false if automatic blinking is disabled. Set this property to false if + * you wish to fully control the blink facial blend shapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasProceduralEyeFaceMovement=true - true if the facial blend shapes for an avatar's eyes + * adjust automatically as the eyes move, false if this automatic movement is disabled. Set this property + * to true to prevent the iris from being obscured by the upper or lower lids. Set this property to + * false if you wish to fully control the eye blend shapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasAudioEnabledFaceMovement=true - true if the avatar's mouth blend shapes animate + * automatically based on detected microphone input, false if this automatic movement is disabled. Set + * this property to false if you wish to fully control the mouth facial blend shapes via the + * {@link MyAvatar.setBlendshape} method. */ Q_PROPERTY(glm::vec3 position READ getWorldPosition WRITE setPositionViaScript) Q_PROPERTY(float scale READ getDomainLimitedScale WRITE setTargetScale) @@ -1130,9 +1133,9 @@ public: /**jsdoc - * Sets the value of a blendshape to animate your avatar's face. To enable other users to see the resulting animation of - * your avatar's face, set {@link Avatar.hasScriptedBlendshapes} to true while using this API and back to false when your - * animation is complete. + * Sets the value of a blend shape to animate your avatar's face. In order for other users to see the resulting animations + * on your avatar's face, set {@link Avatar.hasScriptedBlendshapes} to true. When you are done using this API, + * set {@link Avatar.hasScriptedBlendshapes} back to false when the animation is complete. * @function Avatar.setBlendshape * @param {string} name - The name of the blendshape, per the * {@link https://docs.highfidelity.com/create/avatars/avatar-standards.html#blendshapes Avatar Standards}.