Interim JSDoc for MyAvatar - stubs for remainder

This commit is contained in:
David Rowe 2018-04-24 10:47:33 +12:00
parent 719062dd9f
commit 98f43b6a70
3 changed files with 690 additions and 9 deletions

View file

@ -106,18 +106,22 @@ class MyAvatar : public Avatar {
* what causes your avatar to follow your HMD as you walk around the room, in room scale VR. Disabling this is useful
* if you desire to pin the avatar to a fixed location.
* @property collisionsEnabled {boolean} This can be used to disable collisions between the avatar and the world.
* @property {boolean} characterControllerEnabled
* @property useAdvancedMovementControls {boolean} Stores the user preference only, does not change user mappings, this is
* done in the default script, "toggleAdvancedMovementForHandControllers.js".
* @property {number} yawSpeed
* @property {number} pitchSpeed
* @property hmdRollControlEnabled {boolean} When enabled the roll angle of your HMD will turn your avatar while flying.
* @property hmdRollControlDeadZone {number} If hmdRollControlEnabled is true, this value can be used to tune what roll
* angle is required to begin turning. This angle is specified in degrees.
* @property hmdRollControlRate {number} If hmdRollControlEnabled is true, this value determines the maximum turn rate of
* your avatar when rolling your HMD in degrees per second.
* @property userHeight {number} The height of the user in sensor space.
* @property userEyeHeight {number} Estimated height of the users eyes in sensor space.
* @property SELF_ID {string} UUID representing "my avatar". Only use for local-only entities and overlays in situations
* @property SELF_ID {Uuid} UUID representing "my avatar". Only use for local-only entities and overlays in situations
* where MyAvatar.sessionUUID is not available (e.g., if not connected to a domain). Note: Likely to be deprecated.
* <em>Read-only.</em>
* @property hmdRollControlEnabled {boolean} When enabled the roll angle of your HMD will turn your avatar while flying.
* @property hmdRollControlDeadZone {number} If hmdRollControlEnabled is true, this value can be used to tune what roll
* angle is required to begin turning. This angle is specified in degrees.
* @property hmdRollControlRate {number} If hmdRollControlEnabled is true, this value determines the maximum turn rate of
* your avatar when rolling your HMD in degrees per second.
* @property {number} walkSpeed
*
* @property {Vec3} skeletonOffset - Can be used to apply a translation offset between the avatar's position and the
* registration point of the 3D model.
@ -240,6 +244,9 @@ public:
void reset(bool andRecenter = false, bool andReload = true, bool andHead = true);
/**jsdoc
* @function MyAvatar.resetSensorsAndBody
*/
Q_INVOKABLE void resetSensorsAndBody();
/**jsdoc
@ -264,7 +271,16 @@ public:
const glm::vec3& getHMDSensorPosition() const { return _hmdSensorPosition; }
const glm::quat& getHMDSensorOrientation() const { return _hmdSensorOrientation; }
/**jsdoc
* @function MyAvatar.setOrientationVar
* @param {object} newOrientationVar
*/
Q_INVOKABLE void setOrientationVar(const QVariant& newOrientationVar);
/**jsdoc
* @function MyAvatar.getOrientationVar
* @returns {object}
*/
Q_INVOKABLE QVariant getOrientationVar() const;
// A method intended to be overriden by MyAvatar for polling orientation for network transmission.
@ -415,18 +431,58 @@ public:
// a handler must not remove properties from animStateDictionaryIn, nor change property values that it does not intend to change.
// It is not specified in what order multiple handlers are called.
Q_INVOKABLE QScriptValue addAnimationStateHandler(QScriptValue handler, QScriptValue propertiesList) { return _skeletonModel->getRig().addAnimationStateHandler(handler, propertiesList); }
/**jsdoc
* @function MyAvatar.removeAnimationStateHandler
* @param {number} handler
*/
// Removes a handler previously added by addAnimationStateHandler.
Q_INVOKABLE void removeAnimationStateHandler(QScriptValue handler) { _skeletonModel->getRig().removeAnimationStateHandler(handler); }
/**jsdoc
* @function MyAvatar.getSnapTurn
* @returns {boolean}
*/
Q_INVOKABLE bool getSnapTurn() const { return _useSnapTurn; }
/**jsdoc
* @function MyAvatar.setSnapTurn
* @param {boolean} on
*/
Q_INVOKABLE void setSnapTurn(bool on) { _useSnapTurn = on; }
/**jsdoc
* @function MyAvatar.getClearOverlayWhenMoving
* @returns {boolean}
*/
Q_INVOKABLE bool getClearOverlayWhenMoving() const { return _clearOverlayWhenMoving; }
/**jsdoc
* @function MyAvatar.setClearOverlayWhenMoving
* @returns {boolean}
*/
Q_INVOKABLE void setClearOverlayWhenMoving(bool on) { _clearOverlayWhenMoving = on; }
/**jsdoc
* @function MyAvatar.setDominantHand
* @param {string} hand
*/
Q_INVOKABLE void setDominantHand(const QString& hand);
/**jsdoc
* @function MyAvatar.getDominantHand
* @returns {string}
*/
Q_INVOKABLE QString getDominantHand() const { return _dominantHand; }
/**jsdoc
* @function MyAvatar.setHMDLeanRecenterEnabled
* @param {boolean} enabled
*/
Q_INVOKABLE void setHMDLeanRecenterEnabled(bool value) { _hmdLeanRecenterEnabled = value; }
/**jsdoc
* @function MyAvatar.getHMDLeanRecenterEnabled
* @returns {boolean}
*/
Q_INVOKABLE bool getHMDLeanRecenterEnabled() const { return _hmdLeanRecenterEnabled; }
bool useAdvancedMovementControls() const { return _useAdvancedMovementControls.get(); }
@ -452,13 +508,35 @@ public:
void setDriveKey(DriveKeys key, float val);
void setSprintMode(bool sprint);
float getDriveKey(DriveKeys key) const;
/**jsdoc
* @function MyAvatar.getRawDriveKey
* @param {DriveKeys} key
* @returns {number}
*/
Q_INVOKABLE float getRawDriveKey(DriveKeys key) const;
void relayDriveKeysToCharacterController();
/**jsdoc
* @function MyAvatar.disableDriveKey
* @param {DriveKeys} key
*/
Q_INVOKABLE void disableDriveKey(DriveKeys key);
/**jsdoc
* @function MyAvatar.enableDriveKey
* @param {DriveKeys} key
*/
Q_INVOKABLE void enableDriveKey(DriveKeys key);
/**jsdoc
* @function MyAvatar.isDriveKeyDisabled
* @param {DriveKeys} key
* @returns {boolean}
*/
Q_INVOKABLE bool isDriveKeyDisabled(DriveKeys key) const;
/**jsdoc
*The triggerVerticalRecenter function activates one time the recentering
*behaviour in the vertical direction. This call is only takes effect when the property
@ -495,9 +573,29 @@ public:
* print(JSON.stringify(MyAvatar.getHeadPosition()));
*/
Q_INVOKABLE glm::vec3 getHeadPosition() const { return getHead()->getPosition(); }
/**jsdoc
* @function MyAvatar.getHeadFinalYaw
* @returns {number}
*/
Q_INVOKABLE float getHeadFinalYaw() const { return getHead()->getFinalYaw(); }
/**jsdoc
* @function MyAvatar.getHeadFinalRoll
* @returns {number}
*/
Q_INVOKABLE float getHeadFinalRoll() const { return getHead()->getFinalRoll(); }
/**jsdoc
* @function MyAvatar.getHeadFinalPitch
* @returns {number}
*/
Q_INVOKABLE float getHeadFinalPitch() const { return getHead()->getFinalPitch(); }
/**jsdoc
* @function MyAvatar.getHeadDeltaPitch
* @returns {number}
*/
Q_INVOKABLE float getHeadDeltaPitch() const { return getHead()->getDeltaPitch(); }
/**jsdoc
@ -517,6 +615,11 @@ public:
* print(JSON.stringify(MyAvatar.getTargetAvatarPosition()));
*/
Q_INVOKABLE glm::vec3 getTargetAvatarPosition() const { return _targetAvatarPosition; }
/**jsdoc
* @function MyAvatar.getTargetAvatar
* @returns {AvatarData}
*/
Q_INVOKABLE ScriptAvatarData* getTargetAvatar() const;
@ -543,7 +646,17 @@ public:
* print(JSON.stringify(MyAvatar.getLeftHandPosition()));
*/
Q_INVOKABLE glm::vec3 getRightHandPosition() const;
/**jsdoc
* @function MyAvatar.getLeftHandTipPosition
* @returns {Vec3}
*/
Q_INVOKABLE glm::vec3 getLeftHandTipPosition() const;
/**jsdoc
* @function MyAvatar.getRightHandTipPosition
* @returns {Vec3}
*/
Q_INVOKABLE glm::vec3 getRightHandTipPosition() const;
@ -572,16 +685,67 @@ public:
* print(JSON.stringify(MyAvatar.getRightHandPose()));
*/
Q_INVOKABLE controller::Pose getRightHandPose() const;
/**jsdoc
* @function MyAvatar.getLeftHandTipPose
* @returns {Pose}
*/
Q_INVOKABLE controller::Pose getLeftHandTipPose() const;
/**jsdoc
* @function MyAvatar.getRightHandTipPose
* @returns {Pose}
*/
Q_INVOKABLE controller::Pose getRightHandTipPose() const;
// world-space to avatar-space rigconversion functions
/**jsdoc
* @function MyAvatar.worldToJointPoint
* @param {Vec3} position
* @param {number} [jointIndex=-1]
* @returns {Vec3}
*/
Q_INVOKABLE glm::vec3 worldToJointPoint(const glm::vec3& position, const int jointIndex = -1) const;
/**jsdoc
* @function MyAvatar.worldToJointDirection
* @param {Vec3} direction
* @param {number} [jointIndex=-1]
* @returns {Vec3}
*/
Q_INVOKABLE glm::vec3 worldToJointDirection(const glm::vec3& direction, const int jointIndex = -1) const;
/**jsdoc
* @function MyAvatar.worldToJointRotation
* @param {Quat} rotation
* @param {number} [jointIndex=-1]
* @returns {Quat}
*/
Q_INVOKABLE glm::quat worldToJointRotation(const glm::quat& rotation, const int jointIndex = -1) const;
/**jsdoc
* @function MyAvatar.jointToWorldPoint
* @param {vec3} position
* @param {number} [jointIndex=-1]
* @returns {Vec3}
*/
Q_INVOKABLE glm::vec3 jointToWorldPoint(const glm::vec3& position, const int jointIndex = -1) const;
/**jsdoc
* @function MyAvatar.jointToWorldDirection
* @param {Vec3} direction
* @param {number} [jointIndex=-1]
* @returns {Vec3}
*/
Q_INVOKABLE glm::vec3 jointToWorldDirection(const glm::vec3& direction, const int jointIndex = -1) const;
/**jsdoc
* @function MyAvatar.jointToWorldRotation
* @param {Quat} rotation
* @param {number} [jointIndex=-1]
* @returns {Quat}
*/
Q_INVOKABLE glm::quat jointToWorldRotation(const glm::quat& rotation, const int jointIndex = -1) const;
AvatarWeakPointer getLookAtTargetAvatar() const { return _lookAtTargetAvatar; }
@ -600,12 +764,35 @@ public:
virtual void clearJointData(const QString& name) override;
virtual void clearJointsData() override;
/**jsdoc
* @function MyAvatar.pinJoint
* @param {number} index
* @param {Vec3} position
* @param {Quat} orientation
* @returns {boolean}
*/
Q_INVOKABLE bool pinJoint(int index, const glm::vec3& position, const glm::quat& orientation);
bool isJointPinned(int index);
/**jsdoc
* @function MyAvatar.clearPinOnJoint
* @param {number} index
* @returns {boolean}
*/
Q_INVOKABLE bool clearPinOnJoint(int index);
/**jsdoc
* @function MyAvatar.getIKErrorOnLastSolve
* @returns {number}
*/
Q_INVOKABLE float getIKErrorOnLastSolve() const;
/**jsdoc
* @function MyAvatar.useFullAvatarURL
* @param {string} fullAvatarURL
* @param {string} [modelName=""]
*/
Q_INVOKABLE void useFullAvatarURL(const QUrl& fullAvatarURL, const QString& modelName = QString());
/**jsdoc
@ -683,17 +870,68 @@ public:
QVariantList getAvatarEntitiesVariant();
void removeAvatarEntities();
/**jsdoc
* @function MyAvatar.isFlying
* @returns {boolean}
*/
Q_INVOKABLE bool isFlying();
/**jsdoc
* @function MyAvatar.isInAir
* @returns {boolean}
*/
Q_INVOKABLE bool isInAir();
/**jsdoc
* @function MyAvatar.setFlyingEnabled
* @param {boolean} enabled
*/
Q_INVOKABLE void setFlyingEnabled(bool enabled);
/**jsdoc
* @function MyAvatar.getFlyingEnabled
* @returns {boolean}
*/
Q_INVOKABLE bool getFlyingEnabled();
/**jsdoc
* @function MyAvatar.getAvatarScale
* @returns {number}
*/
Q_INVOKABLE float getAvatarScale();
/**jsdoc
* @function MyAvatar.setAvatarScale
* @param {number} scale
*/
Q_INVOKABLE void setAvatarScale(float scale);
/**jsdoc
* @function MyAvatar.setCollisionsEnabled
* @param {boolean} enabled
*/
Q_INVOKABLE void setCollisionsEnabled(bool enabled);
/**jsdoc
* @function MyAvatar.getCollisionsEnabled
* @returns {boolean}
*/
Q_INVOKABLE bool getCollisionsEnabled();
/**jsdoc
* @function MyAvatar.setCharacterControllerEnabled
* @param {boolean} enabled
* @deprecated
*/
Q_INVOKABLE void setCharacterControllerEnabled(bool enabled); // deprecated
/**jsdoc
* @function MyAvatar.getCharacterControllerEnabled
* @returns {boolean}
* @deprecated
*/
Q_INVOKABLE bool getCharacterControllerEnabled(); // deprecated
virtual glm::quat getAbsoluteJointRotationInObjectFrame(int index) const override;
@ -719,7 +957,18 @@ public:
// results are in HMD frame
glm::mat4 deriveBodyFromHMDSensor() const;
/**jsdoc
* @function MyAvatar.isUp
* @param {Vec3} direction
* @returns {boolean}
*/
Q_INVOKABLE bool isUp(const glm::vec3& direction) { return glm::dot(direction, _worldUpDirection) > 0.0f; }; // true iff direction points up wrt avatar's definition of up.
/**jsdoc
* @function MyAvatar.isDown
* @param {Vec3} direction
* @returns {boolean}
*/
Q_INVOKABLE bool isDown(const glm::vec3& direction) { return glm::dot(direction, _worldUpDirection) < 0.0f; };
void setUserHeight(float value);
@ -767,9 +1016,21 @@ public slots:
*/
void resetSize();
/**jsdoc
* @function MyAvatar.animGraphLoaded
*/
void animGraphLoaded();
/**jsdoc
* @function MyAvatar.setGravity
* @param {number} gravity
*/
void setGravity(float gravity);
/**jsdoc
* @function MyAvatar.getGravity
* @returns {number}
*/
float getGravity();
/**jsdoc
@ -789,27 +1050,103 @@ public slots:
* @param {object} properties
*/
void goToLocation(const QVariant& properties);
/**jsdoc
* @function MyAvatar.goToLocationAndEnableCollisions
* @param {Vec3} position
*/
void goToLocationAndEnableCollisions(const glm::vec3& newPosition);
/**jsdoc
* @function MyAvatar.safeLanding
* @param {Vec3} position
* @returns {boolean}
*/
bool safeLanding(const glm::vec3& position);
/**jsdoc
* @function MyAvatar.restrictScaleFromDomainSettings
* @param {objecct} domainSettingsObject
*/
void restrictScaleFromDomainSettings(const QJsonObject& domainSettingsObject);
/**jsdoc
* @function MyAvatar.clearScaleRestriction
*/
void clearScaleRestriction();
/**jsdoc
* @function MyAvatar.addThrust
* @param {Vec3} thrust
*/
// Set/Get update the thrust that will move the avatar around
void addThrust(glm::vec3 newThrust) { _thrust += newThrust; };
/**jsdoc
* @function MyAvatar.getThrust
* @returns {vec3}
*/
glm::vec3 getThrust() { return _thrust; };
/**jsdoc
* @function MyAvatar.setThrust
* @param {Vec3} thrust
*/
void setThrust(glm::vec3 newThrust) { _thrust = newThrust; }
/**jsdoc
* @function MyAvatar.updateMotionBehaviorFromMenu
*/
Q_INVOKABLE void updateMotionBehaviorFromMenu();
/**jsdoc
* @function MyAvatar.setEnableDebugDrawDefaultPose
* @param {boolean} enabled
*/
void setEnableDebugDrawDefaultPose(bool isEnabled);
/**jsdoc
* @function MyAvatar.setEnableDebugDrawAnimPose
* @param {boolean} enabled
*/
void setEnableDebugDrawAnimPose(bool isEnabled);
/**jsdoc
* @function MyAvatar.setEnableDebugDrawPosition
* @param {boolean} enabled
*/
void setEnableDebugDrawPosition(bool isEnabled);
/**jsdoc
* @function MyAvatar.setEnableDebugDrawHandControllers
* @param {boolean} enabled
*/
void setEnableDebugDrawHandControllers(bool isEnabled);
/**jsdoc
* @function MyAvatar.setEnableDebugDrawSensorToWorldMatrix
* @param {boolean} enabled
*/
void setEnableDebugDrawSensorToWorldMatrix(bool isEnabled);
/**jsdoc
* @function MyAvatar.setEnableDebugDrawIKTargets
* @param {boolean} enabled
*/
void setEnableDebugDrawIKTargets(bool isEnabled);
/**jsdoc
* @function MyAvatar.setEnableDebugDrawIKConstraints
* @param {boolean} enabled
*/
void setEnableDebugDrawIKConstraints(bool isEnabled);
/**jsdoc
* @function MyAvatar.setEnableDebugDrawIKChains
* @param {boolean} enabled
*/
void setEnableDebugDrawIKChains(bool isEnabled);
/**jsdoc
* @function MyAvatar.setEnableDebugDrawDetailedCollision
* @param {boolean} enabled
*/
void setEnableDebugDrawDetailedCollision(bool isEnabled);
/**jsdoc
@ -830,21 +1167,77 @@ public slots:
* }, 10000);
*/
void setEnableMeshVisible(bool isEnabled);
/**jsdoc
* @function MyAvatar.setEnableInverseKinematics
* @param {boolean} enabled
*/
void setEnableInverseKinematics(bool isEnabled);
/**jsdoc
* @function MyAvatar.getAnimGraphOverrideUrl
* @returns {string}
*/
QUrl getAnimGraphOverrideUrl() const; // thread-safe
/**jsdoc
* @function MyAvatar.setAnimGraphOverrideUrl
* @param {string} url
*/
void setAnimGraphOverrideUrl(QUrl value); // thread-safe
/**jsdoc
* @function MyAvatar.getAnimGraphUrl
* @returns {string}
*/
QUrl getAnimGraphUrl() const; // thread-safe
/**jsdoc
* @function MyAvatar.setAnimGraphUrl
* @param {string} url
*/
void setAnimGraphUrl(const QUrl& url); // thread-safe
/**jsdoc
* @function MyAvatar.getPositionForAudio
* @returns {Vec3}
*/
glm::vec3 getPositionForAudio();
/**jsdoc
* @function MyAvatar.getOrientationForAudio
* @returns {Quat}
*/
glm::quat getOrientationForAudio();
/**jsdoc
* @function MyAvatar.setModelScale
* @param {number} scale
*/
virtual void setModelScale(float scale) override;
signals:
/**jsdoc
* @function MyAvatar.audioListenerModeChanged
* @returns {Signal}
*/
void audioListenerModeChanged();
/**jsdoc
* @function MyAvatar.transformChanged
* @returns {Signal}
*/
void transformChanged();
/**jsdoc
* @function MyAvatar.newCollisionSoundURL
* @param {string} url
* @returns {Signal}
*/
void newCollisionSoundURL(const QUrl& url);
/**jsdoc
@ -858,15 +1251,68 @@ signals:
* });
*/
void collisionWithEntity(const Collision& collision);
/**jsdoc
* @function MyAvatar.energyChanged
* @param {number} energy
* @returns {Signal}
*/
void energyChanged(float newEnergy);
/**jsdoc
* @function MyAvatar.positionGoneTo
* @returns {Signal}
*/
void positionGoneTo();
/**jsdoc
* @function MyAvatar.onLoadComplete
* @returns {Signal}
*/
void onLoadComplete();
/**jsdoc
* @function MyAvatar.wentAway
* @returns {Signal}
*/
void wentAway();
/**jsdoc
* @function MyAvatar.wentActive
* @returns {Signal}
*/
void wentActive();
/**jsdoc
* @function MyAvatar.skeletonChanged
* @returns {Signal}
*/
void skeletonChanged();
/**jsdoc
* @function MyAvatar.dominantHandChanged
* @param {string} hand
* @returns {Signal}
*/
void dominantHandChanged(const QString& hand);
/**jsdoc
* @function MyAvatar.sensorToWorldScaleChanged
* @param {number} scale
* @returns {Signal}
*/
void sensorToWorldScaleChanged(float sensorToWorldScale);
/**jsdoc
* @function MyAvatar.attachmentsChanged
* @returns {Signal}
*/
void attachmentsChanged();
/**jsdoc
* @function MyAvatar.scaleChanged
* @returns {Signal}
*/
void scaleChanged();
private slots:

View file

@ -120,7 +120,18 @@ public:
virtual int getJointIndex(const QString& name) const override;
virtual QStringList getJointNames() const override;
/**jsdoc
* @function MyAvatar.getDefaultJointRotation
* @param {number} index
* @returns {Quat}
*/
Q_INVOKABLE virtual glm::quat getDefaultJointRotation(int index) const;
/**jsdoc
* @function MyAvatar.getDefaultJointTranslation
* @param {number} index
* @returns {Vec3}
*/
Q_INVOKABLE virtual glm::vec3 getDefaultJointTranslation(int index) const;
/**jsdoc
@ -217,6 +228,10 @@ public:
*/
Q_INVOKABLE glm::vec3 getNeckPosition() const;
/**jsdoc
* @function MyAvatar.getAcceleration
* @returns {Vec3}
*/
Q_INVOKABLE glm::vec3 getAcceleration() const { return _acceleration; }
/// Scales a world space position vector relative to the avatar position and scale
@ -240,12 +255,36 @@ public:
void setPositionViaScript(const glm::vec3& position) override;
void setOrientationViaScript(const glm::quat& orientation) override;
// these call through to the SpatiallyNestable versions, but they are here to expose these to javascript.
/**jsdoc
* @function MyAvatar.getParentID
* @returns {Uuid}
*/
// This calls through to the SpatiallyNestable versions, but is here to expose these to JavaScript.
Q_INVOKABLE virtual const QUuid getParentID() const override { return SpatiallyNestable::getParentID(); }
/**jsdoc
* @function MyAvatar.setParentID
* @param {Uuid} parentID
*/
// This calls through to the SpatiallyNestable versions, but is here to expose these to JavaScript.
Q_INVOKABLE virtual void setParentID(const QUuid& parentID) override;
/**jsdoc
* @function MyAvatar.getParentJointIndex
* @returns {number}
*/
// This calls through to the SpatiallyNestable versions, but is here to expose these to JavaScript.
Q_INVOKABLE virtual quint16 getParentJointIndex() const override { return SpatiallyNestable::getParentJointIndex(); }
/**jsdoc
* @function MyAvatar.setParentJointIndex
* @param {number} parentJointIndex
*/
// This calls through to the SpatiallyNestable versions, but is here to expose these to JavaScript.
Q_INVOKABLE virtual void setParentJointIndex(quint16 parentJointIndex) override;
/**jsdoc
* Returns an array of joints, where each joint is an object containing name, index, and parentIndex fields.
* @function MyAvatar.getSkeleton
@ -273,6 +312,11 @@ public:
void setTargetScale(float targetScale) override;
float getTargetScale() const { return _targetScale; }
/**jsdoc
* @function MyAvatar.getSimulationRate
* @param {string} [rateName=""]
* @returns {number}
*/
Q_INVOKABLE float getSimulationRate(const QString& rateName = QString("")) const;
bool hasNewJointData() const { return _hasNewJointData; }
@ -294,6 +338,7 @@ public:
bool isFading() const { return _isFading; }
void updateFadingStatus(render::ScenePointer scene);
// JSDoc is in AvatarData.h.
Q_INVOKABLE virtual float getEyeHeight() const override;
// returns eye height of avatar in meters, ignoring avatar scale.
@ -359,8 +404,18 @@ public slots:
// hooked up to Model::setURLFinished signal
void setModelURLFinished(bool success);
// hooked up to Model::rigReady & rigReset signals
/**jsdoc
* @function MyAvatar.rigReady
* @returns {Signal}
*/
// Hooked up to Model::rigReady signal
void rigReady();
/**jsdoc
* @function MyAvatar.rigReset
* @returns {Signal}
*/
// Jooked up to Model::rigReset signal
void rigReset();
protected:

View file

@ -548,11 +548,24 @@ public:
void setDomainMinimumHeight(float domainMinimumHeight);
void setDomainMaximumHeight(float domainMaximumHeight);
// Hand State
/**jsdoc
* @function MyAvatar.setHandState
* @param {string} state
*/
Q_INVOKABLE void setHandState(char s) { _handState = s; }
/**jsdoc
* @function MyAvatar.getHandState
* @returns {string}
*/
Q_INVOKABLE char getHandState() const { return _handState; }
const QVector<JointData>& getRawJointData() const { return _jointData; }
/**jsdoc
* @function MyAvatar.setRawJointData
* @param {JointData[]} data
*/
Q_INVOKABLE void setRawJointData(QVector<JointData> data);
/**jsdoc
@ -618,6 +631,12 @@ public:
* @param {number} index - The index of the joint.
*/
Q_INVOKABLE virtual void clearJointData(int index);
/**jsdoc
* @function MyAvatar.isJointDataValid
* @param {number} index
* @returns {boolean}
*/
Q_INVOKABLE bool isJointDataValid(int index) const;
/**jsdoc
@ -724,6 +743,12 @@ public:
* }, 5000);
*/
Q_INVOKABLE virtual void clearJointData(const QString& name);
/**jsdoc
* @function MyAvatar.isJointDataValid
* @param {string} name
* @returns {boolean}
*/
Q_INVOKABLE virtual bool isJointDataValid(const QString& name) const;
/**jsdoc
@ -757,6 +782,11 @@ public:
* print(JSON.stringify(MyAvatar.getJointRotations()));
*/
Q_INVOKABLE virtual QVector<glm::quat> getJointRotations() const;
/**jsdoc
* @function MyAvatar.getJointTranslations
* @returns {Vec3[]}
*/
Q_INVOKABLE virtual QVector<glm::vec3> getJointTranslations() const;
/**jsdoc
@ -795,6 +825,11 @@ public:
* }, 5000);
*/
Q_INVOKABLE virtual void setJointRotations(const QVector<glm::quat>& jointRotations);
/**jsdoc
* @function MyAvatar.setJointTranslations
* @param {Vec3[]} translations
*/
Q_INVOKABLE virtual void setJointTranslations(const QVector<glm::vec3>& jointTranslations);
/**jsdoc
@ -838,14 +873,45 @@ public:
*/
Q_INVOKABLE virtual QStringList getJointNames() const;
/**jsdoc
* @function MyAvatar.setBlendshape
* @param {string} name
* @param {number} value
*/
Q_INVOKABLE void setBlendshape(QString name, float val) { _headData->setBlendshape(name, val); }
/**jsdoc
* @function MyAvatar.getAttachmentsVariant
* @returns {object}
*/
Q_INVOKABLE QVariantList getAttachmentsVariant() const;
/**jsdoc
* @function MyAvatar.setAttachmentsVariant
* @param {object} variant
*/
Q_INVOKABLE void setAttachmentsVariant(const QVariantList& variant);
/**jsdoc
* @function MyAvatar.updateAvatarEntity
* @param {Uuid} entityID
* @param {string} entityData
*/
Q_INVOKABLE void updateAvatarEntity(const QUuid& entityID, const QByteArray& entityData);
/**jsdoc
* @function MyAvatar.clearAvatarEntity
* @param {Uuid} entityID
*/
Q_INVOKABLE void clearAvatarEntity(const QUuid& entityID);
/**jsdoc
* @function MyAvatar.setForceFaceTrackerConnected
* @param {boolean} connected
*/
Q_INVOKABLE void setForceFaceTrackerConnected(bool connected) { _forceFaceTrackerConnected = connected; }
// key state
@ -994,19 +1060,63 @@ public:
glm::vec3 getClientGlobalPosition() const { return _globalPosition; }
glm::vec3 getGlobalBoundingBoxCorner() const { return _globalPosition + _globalBoundingBoxOffset - _globalBoundingBoxDimensions; }
/**jsdoc
* @function MyAvatar.getAvatarEntityData
* @returns {object}
*/
Q_INVOKABLE AvatarEntityMap getAvatarEntityData() const;
/**jsdoc
* @function MyAvatar.setAvatarEntityData
* @param {object} avatarEntityData
*/
Q_INVOKABLE void setAvatarEntityData(const AvatarEntityMap& avatarEntityData);
virtual void setAvatarEntityDataChanged(bool value) { _avatarEntityDataChanged = value; }
void insertDetachedEntityID(const QUuid entityID);
AvatarEntityIDs getAndClearRecentlyDetachedIDs();
/**jsdoc
* @function MyAvatar.getSensorToWorldMatrix
* @returns {Mat4}
*/
// thread safe
Q_INVOKABLE glm::mat4 getSensorToWorldMatrix() const;
/**jsdoc
* @function MyAvatar.getSensorToWorldScale
* @returns {number}
*/
// thread safe
Q_INVOKABLE float getSensorToWorldScale() const;
/**jsdoc
* @function MyAvatar.getControllerLeftHandMatrix
* @returns {Mat4}
*/
// thread safe
Q_INVOKABLE glm::mat4 getControllerLeftHandMatrix() const;
/**jsdoc
* @function MyAvatar.getControllerRightHandMatrix
* @returns {Mat4}
*/
// thread safe
Q_INVOKABLE glm::mat4 getControllerRightHandMatrix() const;
/**jsdoc
* @function MyAvatar.getDataRate
* @param {string} [rateName=""]
* @returns {number}
*/
Q_INVOKABLE float getDataRate(const QString& rateName = QString("")) const;
/**jsdoc
* @function MyAvatar.getUpdateRate
* @param {string} [rateName=""]
* @returns {number}
*/
Q_INVOKABLE float getUpdateRate(const QString& rateName = QString("")) const;
int getJointCount() const { return _jointData.size(); }
@ -1042,17 +1152,55 @@ public:
virtual void removeMaterial(graphics::MaterialPointer material, const std::string& parentMaterialName) {}
signals:
/**jsdoc
* @function MyAvatar.displayNameChanged
*/
void displayNameChanged();
/**jsdoc
* @function MyAvatar.sessionDisplayNameChanged
*/
void sessionDisplayNameChanged();
/**jsdoc
* @function MyAvatar.skeletonModelURLChanged
*/
void skeletonModelURLChanged();
/**jsdoc
* @function MyAvatar.lookAtSnappingChanged
* @param {boolean} enabled
*/
void lookAtSnappingChanged(bool enabled);
/**jsdoc
* @function MyAvatar.sessionUUIDChanged
*/
void sessionUUIDChanged();
public slots:
/**jsdoc
* @function MyAvatar.sendAvatarDataPacket
* @param {boolean} [sendAll=false]
*/
void sendAvatarDataPacket(bool sendAll = false);
/**jsdoc
* @function MyAvatar.sendIdentityPacket
*/
void sendIdentityPacket();
/**jsdoc
* @function MyAvatar.setJointMappingsFromNetworkReply
*/
void setJointMappingsFromNetworkReply();
/**jsdoc
* @function MyAvatar.setSessionUUID
* @param {Uuid} sessionUUID
*/
virtual void setSessionUUID(const QUuid& sessionUUID) {
if (sessionUUID != getID()) {
if (sessionUUID == QUuid()) {
@ -1064,13 +1212,45 @@ public slots:
}
}
/**jsdoc
* @function MyAvatar.getAbsoluteJointRotationInObjectFrame
* @param {number} index
* @returns {Quat}
*/
virtual glm::quat getAbsoluteJointRotationInObjectFrame(int index) const override;
/**jsdoc
* @function MyAvatar.getAbsoluteJointTranslationInObjectFrame
* @param {number} index
* @returns {Vec3}
*/
virtual glm::vec3 getAbsoluteJointTranslationInObjectFrame(int index) const override;
/**jsdoc
* @function MyAvatar.setAbsoluteJointRotationInObjectFrame
* @param {number} index
* @param {Quat} rotation
* @returns {boolean}
*/
virtual bool setAbsoluteJointRotationInObjectFrame(int index, const glm::quat& rotation) override { return false; }
/**jsdoc
* @function MyAvatar.setAbsoluteJointTranslationInObjectFrame
* @param {number} index
* @param {Vec3} translation
* @returns {boolean}
*/
virtual bool setAbsoluteJointTranslationInObjectFrame(int index, const glm::vec3& translation) override { return false; }
/**jsdoc
* @function MyAvatar.getTargetScale
* @returns {number}
*/
float getTargetScale() const { return _targetScale; } // why is this a slot?
/**jsdoc
* @function MyAvatar.resetLastSent
*/
void resetLastSent() { _lastToByteArray = 0; }
protected: