mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-04-08 00:22:25 +02:00
Only whitespace changes
This commit is contained in:
parent
3347cc563b
commit
87ba20ecb4
24 changed files with 183 additions and 183 deletions
|
@ -190,7 +190,7 @@ void AvatarBookmarks::updateAvatarEntities(const QVariantList &avatarEntities) {
|
|||
* @property {number} version - The version of the bookmark data format.
|
||||
* @property {string} avatarUrl - The URL of the avatar model.
|
||||
* @property {number} avatarScale - The target scale of the avatar.
|
||||
* @property {Array<Object<"properties",Entities.EntityProperties>>} [avatarEntites] - The avatar entities included with the
|
||||
* @property {Array<Object<"properties",Entities.EntityProperties>>} [avatarEntites] - The avatar entities included with the
|
||||
* bookmark.
|
||||
* @property {AttachmentData[]} [attachments] - The attachments included with the bookmark.
|
||||
* <p class="important">Deprecated: Use avatar entities instead.
|
||||
|
|
|
@ -1147,11 +1147,11 @@ void MyAvatar::updateSensorToWorldMatrix() {
|
|||
_sensorToWorldMatrixCache.set(_sensorToWorldMatrix);
|
||||
updateJointFromController(controller::Action::LEFT_HAND, _controllerLeftHandMatrixCache);
|
||||
updateJointFromController(controller::Action::RIGHT_HAND, _controllerRightHandMatrixCache);
|
||||
|
||||
|
||||
if (hasSensorToWorldScaleChanged) {
|
||||
emit sensorToWorldScaleChanged(sensorToWorldScale);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
glm::vec3 MyAvatar::getLeftHandPosition() const {
|
||||
|
@ -1602,7 +1602,7 @@ bool MyAvatar::hasAvatarEntities() const {
|
|||
void MyAvatar::handleCanRezAvatarEntitiesChanged(bool canRezAvatarEntities) {
|
||||
if (canRezAvatarEntities) {
|
||||
// Start displaying avatar entities.
|
||||
// Allow time for the avatar mixer to be updated with the user's permissions so that it doesn't discard the avatar
|
||||
// Allow time for the avatar mixer to be updated with the user's permissions so that it doesn't discard the avatar
|
||||
// entities sent. In theory, typical worst case would be Interface running on same PC as server and the timings of
|
||||
// Interface and the avatar mixer sending DomainListRequest to the domain server being such that the avatar sends its
|
||||
// DomainListRequest and gets its DomainList response DOMAIN_SERVER_CHECK_IN_MSECS after Interface does. Allow extra
|
||||
|
@ -1734,7 +1734,7 @@ void MyAvatar::handleChangedAvatarEntityData() {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// CHANGE real entities
|
||||
|
@ -2593,7 +2593,7 @@ void MyAvatar::setSkeletonModelURL(const QUrl& skeletonModelURL) {
|
|||
}
|
||||
QObject::disconnect(*skeletonConnection);
|
||||
});
|
||||
|
||||
|
||||
saveAvatarUrl();
|
||||
emit skeletonChanged();
|
||||
}
|
||||
|
@ -2972,9 +2972,9 @@ void MyAvatar::attach(const QString& modelURL, const QString& jointName,
|
|||
bool allowDuplicates, bool useSaved) {
|
||||
if (QThread::currentThread() != thread()) {
|
||||
BLOCKING_INVOKE_METHOD(this, "attach",
|
||||
Q_ARG(const QString&, modelURL),
|
||||
Q_ARG(const QString&, jointName),
|
||||
Q_ARG(const glm::vec3&, translation),
|
||||
Q_ARG(const QString&, modelURL),
|
||||
Q_ARG(const QString&, jointName),
|
||||
Q_ARG(const glm::vec3&, translation),
|
||||
Q_ARG(const glm::quat&, rotation),
|
||||
Q_ARG(float, scale),
|
||||
Q_ARG(bool, isSoft),
|
||||
|
@ -3072,7 +3072,7 @@ void MyAvatar::setAttachmentData(const QVector<AttachmentData>& attachmentData)
|
|||
emit attachmentsChanged();
|
||||
}
|
||||
|
||||
QVector<AttachmentData> MyAvatar::getAttachmentData() const {
|
||||
QVector<AttachmentData> MyAvatar::getAttachmentData() const {
|
||||
QVector<AttachmentData> attachmentData;
|
||||
|
||||
if (!DependencyManager::get<NodeList>()->getThisNodeCanRezAvatarEntities()) {
|
||||
|
@ -3128,7 +3128,7 @@ void MyAvatar::setAttachmentsVariant(const QVariantList& variant) {
|
|||
newAttachments.append(attachment);
|
||||
}
|
||||
}
|
||||
setAttachmentData(newAttachments);
|
||||
setAttachmentData(newAttachments);
|
||||
}
|
||||
|
||||
bool MyAvatar::findAvatarEntity(const QString& modelURL, const QString& jointName, QUuid& entityID) {
|
||||
|
@ -3519,7 +3519,7 @@ void MyAvatar::updateOrientation(float deltaTime) {
|
|||
// Smoothly rotate body with arrow keys
|
||||
float targetSpeed = getDriveKey(YAW) * _yawSpeed;
|
||||
CameraMode mode = qApp->getCamera().getMode();
|
||||
bool computeLookAt = isReadyForPhysics() && !qApp->isHMDMode() &&
|
||||
bool computeLookAt = isReadyForPhysics() && !qApp->isHMDMode() &&
|
||||
(mode == CAMERA_MODE_FIRST_PERSON_LOOK_AT || mode == CAMERA_MODE_LOOK_AT || mode == CAMERA_MODE_SELFIE);
|
||||
bool smoothCameraYaw = computeLookAt && mode != CAMERA_MODE_FIRST_PERSON_LOOK_AT;
|
||||
if (smoothCameraYaw) {
|
||||
|
@ -3819,16 +3819,16 @@ void MyAvatar::updateOrientation(float deltaTime) {
|
|||
if (_firstPersonSteadyHeadTimer < FIRST_PERSON_RECENTER_SECONDS) {
|
||||
if (_firstPersonSteadyHeadTimer > 0.0f) {
|
||||
_firstPersonSteadyHeadTimer += deltaTime;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
_shouldTurnToFaceCamera = true;
|
||||
_firstPersonSteadyHeadTimer = 0.0f;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
_firstPersonSteadyHeadTimer = deltaTime;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
head->setBaseYaw(0.0f);
|
||||
head->setBasePitch(getHead()->getBasePitch() + getDriveKey(PITCH) * _pitchSpeed * deltaTime
|
||||
|
@ -3906,7 +3906,7 @@ glm::vec3 MyAvatar::scaleMotorSpeed(const glm::vec3 forward, const glm::vec3 rig
|
|||
zSpeed != 0.0f && xSpeed != 0.0f && !isFlying()){
|
||||
direction = (zSpeed * forward);
|
||||
}
|
||||
|
||||
|
||||
auto length = glm::length(direction);
|
||||
if (length > EPSILON) {
|
||||
direction /= length;
|
||||
|
@ -5457,7 +5457,7 @@ void MyAvatar::setIsInSittingState(bool isSitting) {
|
|||
// In updateSitStandState, we only change state if this timer is above a threshold (STANDING_TIMEOUT, SITTING_TIMEOUT).
|
||||
// This avoids changing state if the user sits and stands up quickly.
|
||||
_sitStandStateTimer = 0.0f;
|
||||
|
||||
|
||||
_isInSittingState.set(isSitting);
|
||||
setResetMode(true);
|
||||
setSitStandStateChange(true);
|
||||
|
@ -5545,7 +5545,7 @@ void MyAvatar::setWalkBackwardSpeed(float value) {
|
|||
changed = false;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (changed && prevVal != value) {
|
||||
emit walkBackwardSpeedChanged(value);
|
||||
}
|
||||
|
@ -5867,7 +5867,7 @@ bool MyAvatar::FollowHelper::shouldActivateHorizontal_userStanding(
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!stepDetected) {
|
||||
glm::vec3 defaultHipsPosition = myAvatar.getAbsoluteDefaultJointTranslationInObjectFrame(myAvatar.getJointIndex("Hips"));
|
||||
glm::vec3 defaultHeadPosition = myAvatar.getAbsoluteDefaultJointTranslationInObjectFrame(myAvatar.getJointIndex("Head"));
|
||||
|
@ -6701,15 +6701,15 @@ void MyAvatar::useFlow(bool isActive, bool isCollidable, const QVariantMap& phys
|
|||
/*@jsdoc
|
||||
* Flow options currently used in flow simulation.
|
||||
* @typedef {object} MyAvatar.FlowData
|
||||
* @property {boolean} initialized - <code>true</code> if flow has been initialized for the current avatar, <code>false</code>
|
||||
* @property {boolean} initialized - <code>true</code> if flow has been initialized for the current avatar, <code>false</code>
|
||||
* if it hasn't.
|
||||
* @property {boolean} active - <code>true</code> if flow is enabled, <code>false</code> if it isn't.
|
||||
* @property {boolean} colliding - <code>true</code> if collisions are enabled, <code>false</code> if they aren't.
|
||||
* @property {Object<GroupName, MyAvatar.FlowPhysicsData>} physicsData - The physics configuration for each group of joints
|
||||
* @property {Object<GroupName, MyAvatar.FlowPhysicsData>} physicsData - The physics configuration for each group of joints
|
||||
* that has been configured.
|
||||
* @property {Object<JointName, MyAvatar.FlowCollisionsData>} collisions - The collisions configuration for each joint that
|
||||
* @property {Object<JointName, MyAvatar.FlowCollisionsData>} collisions - The collisions configuration for each joint that
|
||||
* has collisions configured.
|
||||
* @property {Object<ThreadName, number[]>} threads - The threads that have been configured, with the first joint's name as the
|
||||
* @property {Object<ThreadName, number[]>} threads - The threads that have been configured, with the first joint's name as the
|
||||
* <code>ThreadName</code> and value as an array of the indexes of all the joints in the thread.
|
||||
*/
|
||||
/*@jsdoc
|
||||
|
@ -6760,7 +6760,7 @@ QVariantMap MyAvatar::getFlowData() {
|
|||
}
|
||||
groupJointsMap[groupName].push_back(joint.second.getIndex());
|
||||
}
|
||||
}
|
||||
}
|
||||
for (auto &group : groups) {
|
||||
QVariantMap settingsObject;
|
||||
QString groupName = group.first;
|
||||
|
|
|
@ -29,7 +29,7 @@ const QString LIST_POLY_URL = "https://poly.googleapis.com/v1/assets?";
|
|||
const QString GET_POLY_URL = "https://poly.googleapis.com/v1/assets/model?";
|
||||
|
||||
const QStringList VALID_FORMATS = QStringList() << "BLOCKS" << "FBX" << "GLTF" << "GLTF2" << "OBJ" << "TILT" << "";
|
||||
const QStringList VALID_CATEGORIES = QStringList() << "animals" << "architecture" << "art" << "food" <<
|
||||
const QStringList VALID_CATEGORIES = QStringList() << "animals" << "architecture" << "art" << "food" <<
|
||||
"nature" << "objects" << "people" << "scenes" << "technology" << "transport" << "";
|
||||
|
||||
GooglePolyScriptingInterface::GooglePolyScriptingInterface() {
|
||||
|
@ -75,7 +75,7 @@ QString GooglePolyScriptingInterface::getGLTF2(const QString& keyword, const QSt
|
|||
QUrl url = formatURLQuery(keyword, category, "GLTF2");
|
||||
return getModelURL(url);
|
||||
}
|
||||
|
||||
|
||||
// This method will not be useful until we support Tilt models
|
||||
QString GooglePolyScriptingInterface::getTilt(const QString& keyword, const QString& category) {
|
||||
QUrl url = formatURLQuery(keyword, category, "TILT");
|
||||
|
|
|
@ -43,7 +43,7 @@ HMDToolsDialog::HMDToolsDialog(QWidget* parent) :
|
|||
_defaultPluginName = displayPlugin->getName();
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (displayPlugin->isHmd()) {
|
||||
// Not all HMD's have corresponding screens
|
||||
if (displayPlugin->getHmdScreen() >= 0) {
|
||||
|
@ -90,7 +90,7 @@ HMDToolsDialog::HMDToolsDialog(QWidget* parent) :
|
|||
connect(_switchModeButton, &QPushButton::clicked, [this]{
|
||||
toggleHMDMode();
|
||||
});
|
||||
|
||||
|
||||
// when the application is about to quit, leave HDM mode
|
||||
connect(qApp, &Application::beforeAboutToQuit, [this]{
|
||||
// FIXME this is ineffective because it doesn't trigger the menu to
|
||||
|
@ -211,7 +211,7 @@ void HMDToolsDialog::screenCountChanged(int newCount) {
|
|||
if (qApp->isHMDMode() && _hmdScreenNumber != hmdScreenNumber) {
|
||||
qDebug() << "HMD Display changed WHILE IN HMD MODE";
|
||||
leaveHMDMode();
|
||||
|
||||
|
||||
// if there is a new best HDM screen then go back into HDM mode after done leaving
|
||||
if (hmdScreenNumber >= 0) {
|
||||
qDebug() << "Trying to go back into HMD Mode";
|
||||
|
@ -254,7 +254,7 @@ void HMDWindowWatcher::windowGeometryChanged(int arg) {
|
|||
}
|
||||
|
||||
void HMDWindowWatcher::windowScreenChanged(QScreen* screen) {
|
||||
// if we have more than one screen, and a known hmdScreen then try to
|
||||
// if we have more than one screen, and a known hmdScreen then try to
|
||||
// keep our dialog off of the hmdScreen
|
||||
if (QApplication::desktop()->screenCount() > 1) {
|
||||
int hmdScreenNumber = _hmdTools->_hmdScreenNumber;
|
||||
|
@ -263,10 +263,10 @@ void HMDWindowWatcher::windowScreenChanged(QScreen* screen) {
|
|||
QScreen* hmdScreen = QGuiApplication::screens()[hmdScreenNumber];
|
||||
if (screen == hmdScreen) {
|
||||
qDebug() << "HMD Tools: Whoa! What are you doing? You don't want to move me to the HMD Screen!";
|
||||
|
||||
|
||||
// try to pick a better screen
|
||||
QScreen* betterScreen = NULL;
|
||||
|
||||
|
||||
QScreen* lastApplicationScreen = _hmdTools->getLastApplicationScreen();
|
||||
QWindow* appWindow = qApp->getWindow()->windowHandle();
|
||||
QScreen* appScreen = appWindow->screen();
|
||||
|
|
|
@ -20,7 +20,7 @@ QUrl const TextOverlay::URL(QString("hifi/overlays/TextOverlay.qml"));
|
|||
|
||||
TextOverlay::TextOverlay() : QmlOverlay(URL) { }
|
||||
|
||||
TextOverlay::TextOverlay(const TextOverlay* textOverlay)
|
||||
TextOverlay::TextOverlay(const TextOverlay* textOverlay)
|
||||
: QmlOverlay(URL, textOverlay) {
|
||||
}
|
||||
|
||||
|
|
|
@ -269,7 +269,7 @@ void AnimInverseKinematics::solve(const AnimContext& context, const std::vector<
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// on last iteration, interpolate jointChains, if necessary
|
||||
if (numLoops == MAX_IK_LOOPS) {
|
||||
for (size_t i = 0; i < _prevJointChainInfoVec.size(); i++) {
|
||||
|
@ -357,7 +357,7 @@ void AnimInverseKinematics::solve(const AnimContext& context, const std::vector<
|
|||
bool needsInterpolation = _prevJointChainInfoVec[chainIndex].timer > 0.0f;
|
||||
float alpha = needsInterpolation ? getInterpolationAlpha(_prevJointChainInfoVec[chainIndex].timer) : 0.0f;
|
||||
// update rotationOnly targets that don't lie on the ik chain of other ik targets.
|
||||
if (parentIndex != AnimSkeleton::INVALID_JOINT_INDEX && !_rotationAccumulators[tipIndex].isDirty() &&
|
||||
if (parentIndex != AnimSkeleton::INVALID_JOINT_INDEX && !_rotationAccumulators[tipIndex].isDirty() &&
|
||||
(target.getType() == IKTarget::Type::RotationOnly || target.getType() == IKTarget::Type::Unknown)) {
|
||||
if (target.getType() == IKTarget::Type::RotationOnly) {
|
||||
const glm::quat& targetRotation = target.getRotation();
|
||||
|
|
|
@ -90,7 +90,7 @@ static const QString MAIN_STATE_MACHINE_RIGHT_HAND_POSITION("mainStateMachineRig
|
|||
|
||||
|
||||
/*@jsdoc
|
||||
* <p>An <code>AnimStateDictionary</code> object may have the following properties. It may also have other properties, set by
|
||||
* <p>An <code>AnimStateDictionary</code> object may have the following properties. It may also have other properties, set by
|
||||
* scripts.</p>
|
||||
* <p><strong>Warning:</strong> These properties are subject to change.
|
||||
* <table>
|
||||
|
@ -98,117 +98,117 @@ static const QString MAIN_STATE_MACHINE_RIGHT_HAND_POSITION("mainStateMachineRig
|
|||
* <tr><th>Name</th><th>Type</th><th>Description</th>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr><td><code>userAnimNone</code></td><td>boolean</td><td><code>true</code> when no user overrideAnimation is
|
||||
* <tr><td><code>userAnimNone</code></td><td>boolean</td><td><code>true</code> when no user overrideAnimation is
|
||||
* playing.</td></tr>
|
||||
* <tr><td><code>userAnimA</code></td><td>boolean</td><td><code>true</code> when a user overrideAnimation is
|
||||
* <tr><td><code>userAnimA</code></td><td>boolean</td><td><code>true</code> when a user overrideAnimation is
|
||||
* playing.</td></tr>
|
||||
* <tr><td><code>userAnimB</code></td><td>boolean</td><td><code>true</code> when a user overrideAnimation is
|
||||
* <tr><td><code>userAnimB</code></td><td>boolean</td><td><code>true</code> when a user overrideAnimation is
|
||||
* playing.</td></tr>
|
||||
*
|
||||
* <tr><td><code>sine</code></td><td>number</td><td>Oscillating sine wave.</td></tr>
|
||||
* <tr><td><code>moveForwardSpeed</code></td><td>number</td><td>Controls the blend between the various forward walking
|
||||
* <tr><td><code>moveForwardSpeed</code></td><td>number</td><td>Controls the blend between the various forward walking
|
||||
* & running animations.</td></tr>
|
||||
* <tr><td><code>moveBackwardSpeed</code></td><td>number</td><td>Controls the blend between the various backward walking
|
||||
* <tr><td><code>moveBackwardSpeed</code></td><td>number</td><td>Controls the blend between the various backward walking
|
||||
* & running animations.</td></tr>
|
||||
* <tr><td><code>moveLateralSpeed</code></td><td>number</td><td>Controls the blend between the various sidestep walking
|
||||
* <tr><td><code>moveLateralSpeed</code></td><td>number</td><td>Controls the blend between the various sidestep walking
|
||||
* & running animations.</td></tr>
|
||||
*
|
||||
* <tr><td><code>isMovingForward</code></td><td>boolean</td><td><code>true</code> if the avatar is moving
|
||||
* <tr><td><code>isMovingForward</code></td><td>boolean</td><td><code>true</code> if the avatar is moving
|
||||
* forward.</td></tr>
|
||||
* <tr><td><code>isMovingBackward</code></td><td>boolean</td><td><code>true</code> if the avatar is moving
|
||||
* <tr><td><code>isMovingBackward</code></td><td>boolean</td><td><code>true</code> if the avatar is moving
|
||||
* backward.</td></tr>
|
||||
* <tr><td><code>isMovingRight</code></td><td>boolean</td><td><code>true</code> if the avatar is moving to the
|
||||
* <tr><td><code>isMovingRight</code></td><td>boolean</td><td><code>true</code> if the avatar is moving to the
|
||||
* right.</td></tr>
|
||||
* <tr><td><code>isMovingLeft</code></td><td>boolean</td><td><code>true</code> if the avatar is moving to the
|
||||
* <tr><td><code>isMovingLeft</code></td><td>boolean</td><td><code>true</code> if the avatar is moving to the
|
||||
* left.</td></tr>
|
||||
* <tr><td><code>isMovingRightHmd</code></td><td>boolean</td><td><code>true</code> if the avatar is moving to the right
|
||||
* <tr><td><code>isMovingRightHmd</code></td><td>boolean</td><td><code>true</code> if the avatar is moving to the right
|
||||
* while the user is in HMD mode.</td></tr>
|
||||
* <tr><td><code>isMovingLeftHmd</code></td><td>boolean</td><td><code>true</code> if the avatar is moving to the left while
|
||||
* <tr><td><code>isMovingLeftHmd</code></td><td>boolean</td><td><code>true</code> if the avatar is moving to the left while
|
||||
* the user is in HMD mode.</td></tr>
|
||||
* <tr><td><code>isNotMoving</code></td><td>boolean</td><td><code>true</code> if the avatar is stationary.</td></tr>
|
||||
*
|
||||
* <tr><td><code>isTurningRight</code></td><td>boolean</td><td><code>true</code> if the avatar is turning
|
||||
* <tr><td><code>isTurningRight</code></td><td>boolean</td><td><code>true</code> if the avatar is turning
|
||||
* clockwise.</td></tr>
|
||||
* <tr><td><code>isTurningLeft</code></td><td>boolean</td><td><code>true</code> if the avatar is turning
|
||||
* <tr><td><code>isTurningLeft</code></td><td>boolean</td><td><code>true</code> if the avatar is turning
|
||||
* counter-clockwise.</td></tr>
|
||||
* <tr><td><code>isNotTurning</code></td><td>boolean</td><td><code>true</code> if the avatar is not turning.</td></tr>
|
||||
* <tr><td><code>isFlying</code></td><td>boolean</td><td><code>true</code> if the avatar is flying.</td></tr>
|
||||
* <tr><td><code>isNotFlying</code></td><td>boolean</td><td><code>true</code> if the avatar is not flying.</td></tr>
|
||||
* <tr><td><code>isTakeoffStand</code></td><td>boolean</td><td><code>true</code> if the avatar is about to execute a
|
||||
* <tr><td><code>isTakeoffStand</code></td><td>boolean</td><td><code>true</code> if the avatar is about to execute a
|
||||
* standing jump.</td></tr>
|
||||
* <tr><td><code>isTakeoffRun</code></td><td>boolean</td><td><code>true</code> if the avatar is about to execute a running
|
||||
* <tr><td><code>isTakeoffRun</code></td><td>boolean</td><td><code>true</code> if the avatar is about to execute a running
|
||||
* jump.</td></tr>
|
||||
* <tr><td><code>isNotTakeoff</code></td><td>boolean</td><td><code>true</code> if the avatar is not jumping.</td></tr>
|
||||
* <tr><td><code>isInAirStand</code></td><td>boolean</td><td><code>true</code> if the avatar is in the air after a standing
|
||||
* <tr><td><code>isInAirStand</code></td><td>boolean</td><td><code>true</code> if the avatar is in the air after a standing
|
||||
* jump.</td></tr>
|
||||
* <tr><td><code>isInAirRun</code></td><td>boolean</td><td><code>true</code> if the avatar is in the air after a running
|
||||
* <tr><td><code>isInAirRun</code></td><td>boolean</td><td><code>true</code> if the avatar is in the air after a running
|
||||
* jump.</td></tr>
|
||||
* <tr><td><code>isNotInAir</code></td><td>boolean</td><td><code>true</code> if the avatar on the ground.</td></tr>
|
||||
*
|
||||
* <tr><td><code>inAirAlpha</code></td><td>number</td><td>Used to interpolate between the up, apex, and down in-air
|
||||
* <tr><td><code>inAirAlpha</code></td><td>number</td><td>Used to interpolate between the up, apex, and down in-air
|
||||
* animations.</td></tr>
|
||||
* <tr><td><code>ikOverlayAlpha</code></td><td>number</td><td>The blend between upper body and spline IK versus the
|
||||
* <tr><td><code>ikOverlayAlpha</code></td><td>number</td><td>The blend between upper body and spline IK versus the
|
||||
* underlying animation</td></tr>
|
||||
*
|
||||
* <tr><td><code>headPosition</code></td><td>{@link Vec3}</td><td>The desired position of the <code>Head</code> joint in
|
||||
* <tr><td><code>headPosition</code></td><td>{@link Vec3}</td><td>The desired position of the <code>Head</code> joint in
|
||||
* rig coordinates.</td></tr>
|
||||
* <tr><td><code>headRotation</code></td><td>{@link Quat}</td><td>The desired orientation of the <code>Head</code> joint in
|
||||
* <tr><td><code>headRotation</code></td><td>{@link Quat}</td><td>The desired orientation of the <code>Head</code> joint in
|
||||
* rig coordinates.</td></tr>
|
||||
* <tr><td><code>headType</code></td><td>{@link MyAvatar.IKTargetType|IKTargetType}</td><td>The type of IK used for the
|
||||
* <tr><td><code>headType</code></td><td>{@link MyAvatar.IKTargetType|IKTargetType}</td><td>The type of IK used for the
|
||||
* head.</td></tr>
|
||||
* <tr><td><code>headWeight</code></td><td>number</td><td>How strongly the head chain blends with the other IK
|
||||
* <tr><td><code>headWeight</code></td><td>number</td><td>How strongly the head chain blends with the other IK
|
||||
* chains.</td></tr>
|
||||
*
|
||||
* <tr><td><code>leftHandPosition</code></td><td>{@link Vec3}</td><td>The desired position of the <code>LeftHand</code>
|
||||
* <tr><td><code>leftHandPosition</code></td><td>{@link Vec3}</td><td>The desired position of the <code>LeftHand</code>
|
||||
* joint in rig coordinates.</td></tr>
|
||||
* <tr><td><code>leftHandRotation</code></td><td>{@link Quat}</td><td>The desired orientation of the <code>LeftHand</code>
|
||||
* <tr><td><code>leftHandRotation</code></td><td>{@link Quat}</td><td>The desired orientation of the <code>LeftHand</code>
|
||||
* joint in rig coordinates.</td></tr>
|
||||
* <tr><td><code>leftHandType</code></td><td>{@link MyAvatar.IKTargetType|IKTargetType}</td><td>The type of IK used for the
|
||||
* <tr><td><code>leftHandType</code></td><td>{@link MyAvatar.IKTargetType|IKTargetType}</td><td>The type of IK used for the
|
||||
* left arm.</td></tr>
|
||||
* <tr><td><code>leftHandPoleVectorEnabled</code></td><td>boolean</td><td>When <code>true</code>, the elbow angle is
|
||||
* controlled by the <code>rightHandPoleVector</code> property value. Otherwise the elbow direction comes from the
|
||||
* <tr><td><code>leftHandPoleVectorEnabled</code></td><td>boolean</td><td>When <code>true</code>, the elbow angle is
|
||||
* controlled by the <code>rightHandPoleVector</code> property value. Otherwise the elbow direction comes from the
|
||||
* underlying animation.</td></tr>
|
||||
* <tr><td><code>leftHandPoleReferenceVector</code></td><td>{@link Vec3}</td><td>The direction of the elbow in the local
|
||||
* <tr><td><code>leftHandPoleReferenceVector</code></td><td>{@link Vec3}</td><td>The direction of the elbow in the local
|
||||
* coordinate system of the elbow.</td></tr>
|
||||
* <tr><td><code>leftHandPoleVector</code></td><td>{@link Vec3}</td><td>The direction the elbow should point in rig
|
||||
* <tr><td><code>leftHandPoleVector</code></td><td>{@link Vec3}</td><td>The direction the elbow should point in rig
|
||||
* coordinates.</td></tr>
|
||||
*
|
||||
* <tr><td><code>rightHandPosition</code></td><td>{@link Vec3}</td><td>The desired position of the <code>RightHand</code>
|
||||
* joint in rig coordinates.</td></tr>
|
||||
* <tr><td><code>rightHandRotation</code></td><td>{@link Quat}</td><td>The desired orientation of the
|
||||
* <tr><td><code>rightHandRotation</code></td><td>{@link Quat}</td><td>The desired orientation of the
|
||||
* <code>RightHand</code> joint in rig coordinates.</td></tr>
|
||||
* <tr><td><code>rightHandType</code></td><td>{@link MyAvatar.IKTargetType|IKTargetType}</td><td>The type of IK used for
|
||||
* <tr><td><code>rightHandType</code></td><td>{@link MyAvatar.IKTargetType|IKTargetType}</td><td>The type of IK used for
|
||||
* the right arm.</td></tr>
|
||||
* <tr><td><code>rightHandPoleVectorEnabled</code></td><td>boolean</td><td>When <code>true</code>, the elbow angle is
|
||||
* controlled by the <code>rightHandPoleVector</code> property value. Otherwise the elbow direction comes from the
|
||||
* <tr><td><code>rightHandPoleVectorEnabled</code></td><td>boolean</td><td>When <code>true</code>, the elbow angle is
|
||||
* controlled by the <code>rightHandPoleVector</code> property value. Otherwise the elbow direction comes from the
|
||||
* underlying animation.</td></tr>
|
||||
* <tr><td><code>rightHandPoleReferenceVector</code></td><td>{@link Vec3}</td><td>The direction of the elbow in the local
|
||||
* <tr><td><code>rightHandPoleReferenceVector</code></td><td>{@link Vec3}</td><td>The direction of the elbow in the local
|
||||
* coordinate system of the elbow.</td></tr>
|
||||
* <tr><td><code>rightHandPoleVector</code></td><td>{@link Vec3}</td><td>The direction the elbow should point in rig
|
||||
* <tr><td><code>rightHandPoleVector</code></td><td>{@link Vec3}</td><td>The direction the elbow should point in rig
|
||||
* coordinates.</td></tr>
|
||||
*
|
||||
* <tr><td><code>leftFootIKEnabled</code></td><td>boolean</td><td><code>true</code> if IK is enabled for the left
|
||||
* <tr><td><code>leftFootIKEnabled</code></td><td>boolean</td><td><code>true</code> if IK is enabled for the left
|
||||
* foot.</td></tr>
|
||||
* <tr><td><code>rightFootIKEnabled</code></td><td>boolean</td><td><code>true</code> if IK is enabled for the right
|
||||
* <tr><td><code>rightFootIKEnabled</code></td><td>boolean</td><td><code>true</code> if IK is enabled for the right
|
||||
* foot.</td></tr>
|
||||
*
|
||||
* <tr><td><code>leftFootIKPositionVar</code></td><td>string</td><td>The name of the source for the desired position
|
||||
* <tr><td><code>leftFootIKPositionVar</code></td><td>string</td><td>The name of the source for the desired position
|
||||
* of the <code>LeftFoot</code> joint. If not set, the foot rotation of the underlying animation will be used.</td></tr>
|
||||
* <tr><td><code>leftFootIKRotationVar</code></td><td>string</td><td>The name of the source for the desired rotation
|
||||
* of the <code>LeftFoot</code> joint. If not set, the foot rotation of the underlying animation will be used.</td></tr>
|
||||
* <tr><td><code>leftFootPoleVectorEnabled</code></td><td>boolean</td><td>When <code>true</code>, the knee angle is
|
||||
* controlled by the <code>leftFootPoleVector</code> property value. Otherwise the knee direction comes from the
|
||||
* <tr><td><code>leftFootPoleVectorEnabled</code></td><td>boolean</td><td>When <code>true</code>, the knee angle is
|
||||
* controlled by the <code>leftFootPoleVector</code> property value. Otherwise the knee direction comes from the
|
||||
* underlying animation.</td></tr>
|
||||
* <tr><td><code>leftFootPoleVector</code></td><td>{@link Vec3}</td><td>The direction the knee should face in rig
|
||||
* <tr><td><code>leftFootPoleVector</code></td><td>{@link Vec3}</td><td>The direction the knee should face in rig
|
||||
* coordinates.</td></tr>
|
||||
* <tr><td><code>rightFootIKPositionVar</code></td><td>string</td><td>The name of the source for the desired position
|
||||
* <tr><td><code>rightFootIKPositionVar</code></td><td>string</td><td>The name of the source for the desired position
|
||||
* of the <code>RightFoot</code> joint. If not set, the foot rotation of the underlying animation will be used.</td></tr>
|
||||
* <tr><td><code>rightFootIKRotationVar</code></td><td>string</td><td>The name of the source for the desired rotation
|
||||
* of the <code>RightFoot</code> joint. If not set, the foot rotation of the underlying animation will be used.</td></tr>
|
||||
* <tr><td><code>rightFootPoleVectorEnabled</code></td><td>boolean</td><td>When <code>true</code>, the knee angle is
|
||||
* controlled by the <code>rightFootPoleVector</code> property value. Otherwise the knee direction comes from the
|
||||
* <tr><td><code>rightFootPoleVectorEnabled</code></td><td>boolean</td><td>When <code>true</code>, the knee angle is
|
||||
* controlled by the <code>rightFootPoleVector</code> property value. Otherwise the knee direction comes from the
|
||||
* underlying animation.</td></tr>
|
||||
* <tr><td><code>rightFootPoleVector</code></td><td>{@link Vec3}</td><td>The direction the knee should face in rig
|
||||
* <tr><td><code>rightFootPoleVector</code></td><td>{@link Vec3}</td><td>The direction the knee should face in rig
|
||||
* coordinates.</td></tr>
|
||||
*
|
||||
* <tr><td><code>isTalking</code></td><td>boolean</td><td><code>true</code> if the avatar is talking.</td></tr>
|
||||
|
@ -216,60 +216,60 @@ static const QString MAIN_STATE_MACHINE_RIGHT_HAND_POSITION("mainStateMachineRig
|
|||
*
|
||||
* <tr><td><code>solutionSource</code></td><td>{@link MyAvatar.AnimIKSolutionSource|AnimIKSolutionSource}</td>
|
||||
* <td>Determines the initial conditions of the IK solver.</td></tr>
|
||||
* <tr><td><code>defaultPoseOverlayAlpha</code></td><td>number</td><td>Controls the blend between the main animation state
|
||||
* machine and the default pose. Mostly used during full body tracking so that walking & jumping animations do not
|
||||
* <tr><td><code>defaultPoseOverlayAlpha</code></td><td>number</td><td>Controls the blend between the main animation state
|
||||
* machine and the default pose. Mostly used during full body tracking so that walking & jumping animations do not
|
||||
* affect the IK of the figure.</td></tr>
|
||||
* <tr><td><code>defaultPoseOverlayBoneSet</code></td><td>{@link MyAvatar.AnimOverlayBoneSet|AnimOverlayBoneSet}</td>
|
||||
* <td>Specifies which bones will be replace by the source overlay.</td></tr>
|
||||
* <tr><td><code>hipsType</code></td><td>{@link MyAvatar.IKTargetType|IKTargetType}</td><td>The type of IK used for the
|
||||
* <tr><td><code>hipsType</code></td><td>{@link MyAvatar.IKTargetType|IKTargetType}</td><td>The type of IK used for the
|
||||
* hips.</td></tr>
|
||||
* <tr><td><code>hipsPosition</code></td><td>{@link Vec3}</td><td>The desired position of <code>Hips</code> joint in rig
|
||||
* <tr><td><code>hipsPosition</code></td><td>{@link Vec3}</td><td>The desired position of <code>Hips</code> joint in rig
|
||||
* coordinates.</td></tr>
|
||||
* <tr><td><code>hipsRotation</code></td><td>{@link Quat}</td><td>the desired orientation of the <code>Hips</code> joint in
|
||||
* <tr><td><code>hipsRotation</code></td><td>{@link Quat}</td><td>the desired orientation of the <code>Hips</code> joint in
|
||||
* rig coordinates.</td></tr>
|
||||
* <tr><td><code>spine2Type</code></td><td>{@link MyAvatar.IKTargetType|IKTargetType}</td><td>The type of IK used for the
|
||||
* <tr><td><code>spine2Type</code></td><td>{@link MyAvatar.IKTargetType|IKTargetType}</td><td>The type of IK used for the
|
||||
* <code>Spine2</code> joint.</td></tr>
|
||||
* <tr><td><code>spine2Position</code></td><td>{@link Vec3}</td><td>The desired position of the <code>Spine2</code> joint
|
||||
* <tr><td><code>spine2Position</code></td><td>{@link Vec3}</td><td>The desired position of the <code>Spine2</code> joint
|
||||
* in rig coordinates.</td></tr>
|
||||
* <tr><td><code>spine2Rotation</code></td><td>{@link Quat}</td><td>The desired orientation of the <code>Spine2</code>
|
||||
* <tr><td><code>spine2Rotation</code></td><td>{@link Quat}</td><td>The desired orientation of the <code>Spine2</code>
|
||||
* joint in rig coordinates.</td></tr>
|
||||
*
|
||||
* <tr><td><code>leftFootIKAlpha</code></td><td>number</td><td>Blends between full IK for the leg and the underlying
|
||||
* animation.</td></tr>
|
||||
* <tr><td><code>rightFootIKAlpha</code></td><td>number</td><td>Blends between full IK for the leg and the underlying
|
||||
* animation.</td></tr>
|
||||
* <tr><td><code>hipsWeight</code></td><td>number</td><td>How strongly the hips target blends with the IK solution for
|
||||
* <tr><td><code>hipsWeight</code></td><td>number</td><td>How strongly the hips target blends with the IK solution for
|
||||
* other IK chains.</td></tr>
|
||||
* <tr><td><code>leftHandWeight</code></td><td>number</td><td>How strongly the left hand blends with IK solution of other
|
||||
* <tr><td><code>leftHandWeight</code></td><td>number</td><td>How strongly the left hand blends with IK solution of other
|
||||
* IK chains.</td></tr>
|
||||
* <tr><td><code>rightHandWeight</code></td><td>number</td><td>How strongly the right hand blends with IK solution of other
|
||||
* IK chains.</td></tr>
|
||||
* <tr><td><code>spine2Weight</code></td><td>number</td><td>How strongly the spine2 chain blends with the rest of the IK
|
||||
* <tr><td><code>spine2Weight</code></td><td>number</td><td>How strongly the spine2 chain blends with the rest of the IK
|
||||
* solution.</td></tr>
|
||||
*
|
||||
* <tr><td><code>leftHandOverlayAlpha</code></td><td>number</td><td>Used to blend in the animated hand gesture poses, such
|
||||
* <tr><td><code>leftHandOverlayAlpha</code></td><td>number</td><td>Used to blend in the animated hand gesture poses, such
|
||||
* as point and thumbs up.</td></tr>
|
||||
* <tr><td><code>leftHandGraspAlpha</code></td><td>number</td><td>Used to blend between an open hand and a closed hand.
|
||||
* <tr><td><code>leftHandGraspAlpha</code></td><td>number</td><td>Used to blend between an open hand and a closed hand.
|
||||
* Usually changed as you squeeze the trigger of the hand controller.</td></tr>
|
||||
* <tr><td><code>rightHandOverlayAlpha</code></td><td>number</td><td>Used to blend in the animated hand gesture poses,
|
||||
* <tr><td><code>rightHandOverlayAlpha</code></td><td>number</td><td>Used to blend in the animated hand gesture poses,
|
||||
* such as point and thumbs up.</td></tr>
|
||||
* <tr><td><code>rightHandGraspAlpha</code></td><td>number</td><td>Used to blend between an open hand and a closed hand.
|
||||
* <tr><td><code>rightHandGraspAlpha</code></td><td>number</td><td>Used to blend between an open hand and a closed hand.
|
||||
* Usually changed as you squeeze the trigger of the hand controller.</td></tr>
|
||||
* <tr><td><code>isLeftIndexPoint</code></td><td>boolean</td><td><code>true</code> if the left hand should be
|
||||
* pointing.</td></tr>
|
||||
* <tr><td><code>isLeftThumbRaise</code></td><td>boolean</td><td><code>true</code> if the left hand should be
|
||||
* <tr><td><code>isLeftThumbRaise</code></td><td>boolean</td><td><code>true</code> if the left hand should be
|
||||
* thumbs-up.</td></tr>
|
||||
* <tr><td><code>isLeftIndexPointAndThumbRaise</code></td><td>boolean</td><td><code>true</code> if the left hand should be
|
||||
* <tr><td><code>isLeftIndexPointAndThumbRaise</code></td><td>boolean</td><td><code>true</code> if the left hand should be
|
||||
* pointing and thumbs-up.</td></tr>
|
||||
* <tr><td><code>isLeftHandGrasp</code></td><td>boolean</td><td><code>true</code> if the left hand should be at rest,
|
||||
* <tr><td><code>isLeftHandGrasp</code></td><td>boolean</td><td><code>true</code> if the left hand should be at rest,
|
||||
* grasping the controller.</td></tr>
|
||||
* <tr><td><code>isRightIndexPoint</code></td><td>boolean</td><td><code>true</code> if the right hand should be
|
||||
* pointing.</td></tr>
|
||||
* <tr><td><code>isRightThumbRaise</code></td><td>boolean</td><td><code>true</code> if the right hand should be
|
||||
* <tr><td><code>isRightThumbRaise</code></td><td>boolean</td><td><code>true</code> if the right hand should be
|
||||
* thumbs-up.</td></tr>
|
||||
* <tr><td><code>isRightIndexPointAndThumbRaise</code></td><td>boolean</td><td><code>true</code> if the right hand should
|
||||
* <tr><td><code>isRightIndexPointAndThumbRaise</code></td><td>boolean</td><td><code>true</code> if the right hand should
|
||||
* be pointing and thumbs-up.</td></tr>
|
||||
* <tr><td><code>isRightHandGrasp</code></td><td>boolean</td><td><code>true</code> if the right hand should be at rest,
|
||||
* <tr><td><code>isRightHandGrasp</code></td><td>boolean</td><td><code>true</code> if the right hand should be at rest,
|
||||
* grasping the controller.</td></tr>
|
||||
*
|
||||
* </tbody>
|
||||
|
@ -521,7 +521,7 @@ void Rig::triggerNetworkRole(const QString& role) {
|
|||
_networkVars.set("postTransitAnim", true);
|
||||
_networkAnimState.clipNodeEnum = NetworkAnimState::PostTransit;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void Rig::restoreNetworkAnimation() {
|
||||
|
@ -640,10 +640,10 @@ void Rig::initJointStates(const HFMModel& hfmModel, const glm::mat4& modelOffset
|
|||
|
||||
_internalPoseSet._overrideFlags.clear();
|
||||
_internalPoseSet._overrideFlags.resize(_animSkeleton->getNumJoints(), false);
|
||||
|
||||
|
||||
_networkPoseSet._overridePoses.clear();
|
||||
_networkPoseSet._overridePoses = _animSkeleton->getRelativeDefaultPoses();
|
||||
|
||||
|
||||
_networkPoseSet._overrideFlags.clear();
|
||||
_networkPoseSet._overrideFlags.resize(_animSkeleton->getNumJoints(), false);
|
||||
|
||||
|
@ -1496,7 +1496,7 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos
|
|||
_animVars.set("isInputLeft", false);
|
||||
|
||||
// directly reflects input
|
||||
_animVars.set("isNotInput", true);
|
||||
_animVars.set("isNotInput", true);
|
||||
|
||||
// no input + speed drops to SLOW_SPEED_THRESHOLD
|
||||
// (don't transition run->idle - slow to walk first)
|
||||
|
@ -1728,10 +1728,10 @@ void Rig::updateAnimations(float deltaTime, const glm::mat4& rootTransform, cons
|
|||
_networkVars = networkTriggersOut;
|
||||
_lastContext = context;
|
||||
}
|
||||
|
||||
|
||||
applyOverridePoses();
|
||||
|
||||
buildAbsoluteRigPoses(_internalPoseSet._relativePoses, _internalPoseSet._absolutePoses);
|
||||
buildAbsoluteRigPoses(_internalPoseSet._relativePoses, _internalPoseSet._absolutePoses);
|
||||
_internalFlow.update(deltaTime, _internalPoseSet._relativePoses, _internalPoseSet._absolutePoses, _internalPoseSet._overrideFlags);
|
||||
|
||||
if (_sendNetworkNode) {
|
||||
|
@ -1747,7 +1747,7 @@ void Rig::updateAnimations(float deltaTime, const glm::mat4& rootTransform, cons
|
|||
// copy internal poses to external poses
|
||||
{
|
||||
QWriteLocker writeLock(&_externalPoseSetLock);
|
||||
|
||||
|
||||
_externalPoseSet = _internalPoseSet;
|
||||
}
|
||||
}
|
||||
|
@ -2503,7 +2503,7 @@ void Rig::initAnimGraph(const QUrl& url) {
|
|||
triggerNetworkRole("postTransitAnim");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
connect(_networkLoader.get(), &AnimNodeLoader::error, [networkUrl](int error, QString str) {
|
||||
qCritical(animation) << "Error loading: code = " << error << "str =" << str;
|
||||
|
|
|
@ -471,7 +471,7 @@ QByteArray AvatarData::toByteArray(AvatarDataDetail dataDetail, quint64 lastSent
|
|||
IF_AVATAR_SPACE(PACKET_HAS_AVATAR_GLOBAL_POSITION, sizeof _globalPosition) {
|
||||
auto startSection = destinationBuffer;
|
||||
AVATAR_MEMCPY(_globalPosition);
|
||||
|
||||
|
||||
int numBytes = destinationBuffer - startSection;
|
||||
|
||||
if (outboundDataRateOut) {
|
||||
|
@ -1200,7 +1200,7 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) {
|
|||
auto newHasProceduralBlinkFaceMovement = oneAtBit16(bitItems, PROCEDURAL_BLINK_FACE_MOVEMENT);
|
||||
|
||||
auto newCollideWithOtherAvatars = oneAtBit16(bitItems, COLLIDE_WITH_OTHER_AVATARS);
|
||||
auto newHasPriority = oneAtBit16(bitItems, HAS_HERO_PRIORITY);
|
||||
auto newHasPriority = oneAtBit16(bitItems, HAS_HERO_PRIORITY);
|
||||
|
||||
bool keyStateChanged = (_keyState != newKeyState);
|
||||
bool handStateChanged = (_handState != newHandState);
|
||||
|
@ -1212,7 +1212,7 @@ int AvatarData::parseDataFromBuffer(const QByteArray& buffer) {
|
|||
bool proceduralBlinkFaceMovementChanged = (_headData->getProceduralAnimationFlag(HeadData::BlinkProceduralBlendshapeAnimation) != newHasProceduralBlinkFaceMovement);
|
||||
bool collideWithOtherAvatarsChanged = (_collideWithOtherAvatars != newCollideWithOtherAvatars);
|
||||
bool hasPriorityChanged = (getHasPriority() != newHasPriority);
|
||||
bool somethingChanged = keyStateChanged || handStateChanged || faceStateChanged || eyeStateChanged || audioEnableFaceMovementChanged ||
|
||||
bool somethingChanged = keyStateChanged || handStateChanged || faceStateChanged || eyeStateChanged || audioEnableFaceMovementChanged ||
|
||||
proceduralEyeFaceMovementChanged ||
|
||||
proceduralBlinkFaceMovementChanged || collideWithOtherAvatarsChanged || hasPriorityChanged;
|
||||
|
||||
|
@ -1785,7 +1785,7 @@ glm::vec3 AvatarData::getJointTranslation(int index) const {
|
|||
}
|
||||
|
||||
glm::vec3 AvatarData::getJointTranslation(const QString& name) const {
|
||||
// Can't do this, because the lock needs to cover the entire set of logic. In theory, the joints could change
|
||||
// Can't do this, because the lock needs to cover the entire set of logic. In theory, the joints could change
|
||||
// on another thread in between the call to getJointIndex and getJointTranslation
|
||||
// return getJointTranslation(getJointIndex(name));
|
||||
return readLockWithNamedJointIndex<glm::vec3>(name, [this](int index) {
|
||||
|
@ -1865,7 +1865,7 @@ bool AvatarData::isJointDataValid(const QString& name) const {
|
|||
// return isJointDataValid(getJointIndex(name));
|
||||
|
||||
return readLockWithNamedJointIndex<bool>(name, false, [&](int index) {
|
||||
// This is technically superfluous.... the lambda is only called if index is a valid
|
||||
// This is technically superfluous.... the lambda is only called if index is a valid
|
||||
// offset for _jointData. Nevertheless, it would be confusing to leave the lamdba as
|
||||
// `return true`
|
||||
return index < _jointData.size();
|
||||
|
@ -2144,7 +2144,7 @@ void AvatarData::unpackSkeletonData(const QByteArray& data) {
|
|||
|
||||
const unsigned char* startPosition = reinterpret_cast<const unsigned char*>(data.data());
|
||||
const unsigned char* sourceBuffer = startPosition;
|
||||
|
||||
|
||||
auto header = reinterpret_cast<const AvatarSkeletonTrait::Header*>(sourceBuffer);
|
||||
sourceBuffer += sizeof(const AvatarSkeletonTrait::Header);
|
||||
|
||||
|
@ -2157,7 +2157,7 @@ void AvatarData::unpackSkeletonData(const QByteArray& data) {
|
|||
uJointData.jointIndex = (int)i;
|
||||
uJointData.stringLength = (int)jointData->stringLength;
|
||||
uJointData.stringStart = (int)jointData->stringStart;
|
||||
uJointData.parentIndex = ((uJointData.boneType == AvatarSkeletonTrait::BoneType::SkeletonRoot) ||
|
||||
uJointData.parentIndex = ((uJointData.boneType == AvatarSkeletonTrait::BoneType::SkeletonRoot) ||
|
||||
(uJointData.boneType == AvatarSkeletonTrait::BoneType::NonSkeletonRoot)) ? -1 : (int)jointData->parentIndex;
|
||||
unpackOrientationQuatFromSixBytes(reinterpret_cast<const unsigned char*>(&jointData->defaultRotation), uJointData.defaultRotation);
|
||||
unpackFloatVec3FromSignedTwoByteFixed(reinterpret_cast<const unsigned char*>(&jointData->defaultTranslation), uJointData.defaultTranslation, TRANSLATION_COMPRESSION_RADIX);
|
||||
|
@ -2307,7 +2307,7 @@ void AvatarData::setSkeletonModelURL(const QUrl& skeletonModelURL) {
|
|||
if (expanded == _skeletonModelURL) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
_skeletonModelURL = expanded;
|
||||
if (_clientTraitsHandler) {
|
||||
_clientTraitsHandler->markTraitUpdated(AvatarTraits::SkeletonModelURL);
|
||||
|
@ -2935,14 +2935,14 @@ glm::vec3 AvatarData::getAbsoluteJointTranslationInObjectFrame(int index) const
|
|||
/*@jsdoc
|
||||
* Information on an attachment worn by the avatar.
|
||||
* @typedef {object} AttachmentData
|
||||
* @property {string} modelUrl - The URL of the glTF, FBX, or OBJ model file. glTF models may be in JSON or binary format
|
||||
* @property {string} modelUrl - The URL of the glTF, FBX, or OBJ model file. glTF models may be in JSON or binary format
|
||||
* (".gltf" or ".glb" URLs respectively).
|
||||
* @property {string} jointName - The name of the joint that the attachment is parented to.
|
||||
* @property {Vec3} translation - The offset from the joint that the attachment is positioned at.
|
||||
* @property {Vec3} rotation - The rotation applied to the model relative to the joint orientation.
|
||||
* @property {number} scale - The scale applied to the attachment model.
|
||||
* @property {boolean} soft - If <code>true</code> and the model has a skeleton, the bones of the attached model's skeleton are
|
||||
* rotated to fit the avatar's current pose. If <code>true</code>, the <code>translation</code>, <code>rotation</code>, and
|
||||
* @property {boolean} soft - If <code>true</code> and the model has a skeleton, the bones of the attached model's skeleton are
|
||||
* rotated to fit the avatar's current pose. If <code>true</code>, the <code>translation</code>, <code>rotation</code>, and
|
||||
* <code>scale</code> parameters are ignored.
|
||||
*/
|
||||
QVariant AttachmentData::toVariant() const {
|
||||
|
@ -3138,12 +3138,12 @@ glm::mat4 AvatarData::getControllerRightHandMatrix() const {
|
|||
* @property {boolean} intersects - <code>true</code> if an avatar is intersected, <code>false</code> if it isn't.
|
||||
* @property {string} avatarID - The ID of the avatar that is intersected.
|
||||
* @property {number} distance - The distance from the ray origin to the intersection.
|
||||
* @property {string} face - The name of the box face that is intersected; <code>"UNKNOWN_FACE"</code> if mesh was picked
|
||||
* @property {string} face - The name of the box face that is intersected; <code>"UNKNOWN_FACE"</code> if mesh was picked
|
||||
* against.
|
||||
* @property {Vec3} intersection - The ray intersection point in world coordinates.
|
||||
* @property {Vec3} surfaceNormal - The surface normal at the intersection point.
|
||||
* @property {number} jointIndex - The index of the joint intersected.
|
||||
* @property {SubmeshIntersection} extraInfo - Extra information on the mesh intersected if mesh was picked against,
|
||||
* @property {SubmeshIntersection} extraInfo - Extra information on the mesh intersected if mesh was picked against,
|
||||
* <code>{}</code> if it wasn't.
|
||||
*/
|
||||
QScriptValue RayToAvatarIntersectionResultToScriptValue(QScriptEngine* engine, const RayToAvatarIntersectionResult& value) {
|
||||
|
|
|
@ -98,7 +98,7 @@ namespace controller {
|
|||
if (!QDir(SAVE_DIRECTORY).exists()) {
|
||||
QDir().mkdir(SAVE_DIRECTORY);
|
||||
}
|
||||
|
||||
|
||||
QFile saveFile (fileName);
|
||||
if (!saveFile.open(QIODevice::WriteOnly)) {
|
||||
qWarning() << "could not open file: " << fileName;
|
||||
|
@ -112,7 +112,7 @@ namespace controller {
|
|||
qCritical("unable to gzip while saving to json.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
saveFile.write(jsonDataForFile);
|
||||
saveFile.close();
|
||||
}
|
||||
|
@ -133,7 +133,7 @@ namespace controller {
|
|||
status = false;
|
||||
return object;
|
||||
}
|
||||
|
||||
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData);
|
||||
object = jsonDoc.object();
|
||||
status = true;
|
||||
|
@ -217,12 +217,12 @@ namespace controller {
|
|||
QString filePath = urlPath.toLocalFile();
|
||||
QFileInfo info(filePath);
|
||||
QString extension = info.suffix();
|
||||
|
||||
|
||||
if (extension != "gz") {
|
||||
qWarning() << "can not load file with exentsion of " << extension;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
bool success = false;
|
||||
QJsonObject data = openFile(filePath, success);
|
||||
auto keyValue = data.find("version");
|
||||
|
@ -250,15 +250,15 @@ namespace controller {
|
|||
_poseStateList.push_back(_currentFramePoses);
|
||||
_currentFramePoses.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
_loading = false;
|
||||
}
|
||||
|
||||
|
||||
void InputRecorder::stopRecording() {
|
||||
_recording = false;
|
||||
_framesRecorded = (int)_actionStateList.size();
|
||||
}
|
||||
|
||||
|
||||
void InputRecorder::startPlayback() {
|
||||
_playback = true;
|
||||
_recording = false;
|
||||
|
|
|
@ -811,8 +811,8 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
|||
* unnecessary entity server updates. Scripts should not change this property's value.
|
||||
*
|
||||
* @property {string} actionData="" - Base-64 encoded compressed dump of the actions associated with the entity. This property
|
||||
* is typically not used in scripts directly; rather, functions that manipulate an entity's actions update it, e.g.,
|
||||
* {@link Entities.addAction}. The size of this property increases with the number of actions. Because this property value
|
||||
* is typically not used in scripts directly; rather, functions that manipulate an entity's actions update it, e.g.,
|
||||
* {@link Entities.addAction}. The size of this property increases with the number of actions. Because this property value
|
||||
* has to fit within a Overte datagram packet, there is a limit to the number of actions that an entity can have;
|
||||
* edits which would result in overflow are rejected. <em>Read-only.</em>
|
||||
* @property {Entities.RenderInfo} renderInfo - Information on the cost of rendering the entity. Currently information is only
|
||||
|
@ -1262,8 +1262,8 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
|||
* @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.
|
||||
* <p>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 Overte datagram packet,
|
||||
* <p>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 Overte datagram packet,
|
||||
* there is a limit to the size and complexity of a PolyVox entity; edits which would result in an overflow are rejected.</p>
|
||||
* @property {Entities.PolyVoxSurfaceStyle} voxelSurfaceStyle=2 - The style of rendering the voxels' surface and how
|
||||
* neighboring PolyVox entities are joined.
|
||||
|
@ -1414,7 +1414,7 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const {
|
|||
* <code>false</code> if the web entity's background should be transparent. The webpage must have CSS properties for transparency set
|
||||
* on the <code>background-color</code> for this property to have an effect.
|
||||
* @property {string} userAgent - The user agent for the web entity to use when visiting web pages.
|
||||
* Default value: <code>Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko)
|
||||
* Default value: <code>Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko)
|
||||
* Chrome/69.0.3497.113 Mobile Safari/537.36</code>
|
||||
* @example <caption>Create a Web entity displaying at 1920 x 1080 resolution.</caption>
|
||||
* var METERS_TO_INCHES = 39.3701;
|
||||
|
|
|
@ -362,7 +362,7 @@ MeshPointer Mesh::createIndexedTriangles_P3F(uint32_t numVertices, uint32_t numI
|
|||
mesh->setIndexBuffer(gpu::BufferView(new gpu::Buffer(numIndices * sizeof(uint32_t), (gpu::Byte*) indices), gpu::Element::INDEX_INT32));
|
||||
}
|
||||
|
||||
|
||||
|
||||
std::vector<graphics::Mesh::Part> parts;
|
||||
parts.push_back(graphics::Mesh::Part(0, numIndices, 0, graphics::Mesh::TRIANGLES));
|
||||
mesh->setPartBuffer(gpu::BufferView(new gpu::Buffer(parts.size() * sizeof(graphics::Mesh::Part), (gpu::Byte*) parts.data()), gpu::Element::PART_DRAWCALL));
|
||||
|
|
|
@ -69,7 +69,7 @@ void DataServerAccountInfo::setAccessTokenFromJSON(const QJsonObject& jsonObject
|
|||
void DataServerAccountInfo::setUsername(const QString& username) {
|
||||
if (_username != username) {
|
||||
_username = username;
|
||||
|
||||
|
||||
qCDebug(networking) << "Username changed to" << username;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,9 +94,9 @@ HMACAuth::HMACHash HMACAuth::result() {
|
|||
HMACHash hashValue(EVP_MAX_MD_SIZE);
|
||||
unsigned int hashLen;
|
||||
QMutexLocker lock(&_lock);
|
||||
|
||||
|
||||
auto hmacResult = HMAC_Final(_hmacContext, &hashValue[0], &hashLen);
|
||||
|
||||
|
||||
if (hmacResult) {
|
||||
hashValue.resize((size_t)hashLen);
|
||||
} else {
|
||||
|
|
|
@ -833,7 +833,7 @@ void NodeList::processDomainList(QSharedPointer<ReceivedMessage> message) {
|
|||
|
||||
// FIXME: Remove this call to requestDomainSettings() and reinstate the one in DomainHandler::setIsConnected(), in version
|
||||
// 2021.2.0. (New protocol version implies a domain server upgrade.)
|
||||
if (!_domainHandler.isConnected()
|
||||
if (!_domainHandler.isConnected()
|
||||
&& _domainHandler.getScheme() == URL_SCHEME_VIRCADIA && !_domainHandler.getHostname().isEmpty()) {
|
||||
// We're about to connect but we need the domain settings (in particular, the node permissions) in order to adjust the
|
||||
// canRezAvatarEntities permission above before using the permissions in determining whether or not to connect without
|
||||
|
|
|
@ -157,7 +157,7 @@ qint64 NetworkSocket::bytesToWrite(SocketType socketType, const SockAddr& addres
|
|||
|
||||
|
||||
bool NetworkSocket::hasPendingDatagrams() const {
|
||||
return
|
||||
return
|
||||
#if defined(WEBRTC_DATA_CHANNELS)
|
||||
_webrtcSocket.hasPendingDatagrams() ||
|
||||
#endif
|
||||
|
|
|
@ -394,8 +394,8 @@ qint64 WDCConnection::getBufferedAmount() const {
|
|||
#ifdef WEBRTC_DEBUG
|
||||
qCDebug(networking_webrtc) << "WDCConnection::getBufferedAmount()";
|
||||
#endif
|
||||
return _dataChannel && _dataChannel->state() != DataChannelInterface::kClosing
|
||||
&& _dataChannel->state() != DataChannelInterface::kClosed
|
||||
return _dataChannel && _dataChannel->state() != DataChannelInterface::kClosing
|
||||
&& _dataChannel->state() != DataChannelInterface::kClosed
|
||||
? _dataChannel->buffered_amount() : 0;
|
||||
}
|
||||
|
||||
|
@ -407,7 +407,7 @@ bool WDCConnection::sendDataMessage(const DataBuffer& buffer) {
|
|||
qCDebug(networking_webrtc) << "No data channel to send on";
|
||||
}
|
||||
#endif
|
||||
if (!_dataChannel || _dataChannel->state() == DataChannelInterface::kClosing
|
||||
if (!_dataChannel || _dataChannel->state() == DataChannelInterface::kClosing
|
||||
|| _dataChannel->state() == DataChannelInterface::kClosed) {
|
||||
// Data channel may have been closed while message to send was being prepared.
|
||||
return false;
|
||||
|
@ -625,7 +625,7 @@ void WebRTCDataChannels::closePeerConnection(WDCConnection* connection) {
|
|||
#ifdef WEBRTC_DEBUG
|
||||
qCDebug(networking_webrtc) << "WebRTCDataChannels::closePeerConnection()";
|
||||
#endif
|
||||
// Use Qt's signals/slots mechanism to close the peer connection on its own call stack, separate from the DataChannel
|
||||
// Use Qt's signals/slots mechanism to close the peer connection on its own call stack, separate from the DataChannel
|
||||
// callback that initiated the peer connection.
|
||||
// https://bugs.chromium.org/p/webrtc/issues/detail?id=3721
|
||||
emit closePeerConnectionSoon(connection);
|
||||
|
|
|
@ -50,7 +50,7 @@ int OctreeQuery::getBroadcastData(unsigned char* destinationBuffer) {
|
|||
destinationBuffer += view.serialize(destinationBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// desired Max Octree PPS
|
||||
memcpy(destinationBuffer, &_maxQueryPPS, sizeof(_maxQueryPPS));
|
||||
destinationBuffer += sizeof(_maxQueryPPS);
|
||||
|
@ -95,7 +95,7 @@ int OctreeQuery::getBroadcastData(unsigned char* destinationBuffer) {
|
|||
|
||||
// called on the other nodes - assigns it to my views of the others
|
||||
int OctreeQuery::parseData(ReceivedMessage& message) {
|
||||
|
||||
|
||||
const unsigned char* startPosition = reinterpret_cast<const unsigned char*>(message.getRawMessage());
|
||||
const unsigned char* sourceBuffer = startPosition;
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
using namespace hifi::qml;
|
||||
using namespace hifi::qml::impl;
|
||||
|
||||
QmlUrlValidator OffscreenSurface::validator = [](const QUrl& url) -> bool {
|
||||
QmlUrlValidator OffscreenSurface::validator = [](const QUrl& url) -> bool {
|
||||
if (url.isRelative()) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -33,11 +33,11 @@ QObject(scriptEngine),
|
|||
QScriptClass(scriptEngine) {
|
||||
qScriptRegisterMetaType<QByteArray>(engine(), toScriptValue, fromScriptValue);
|
||||
QScriptValue global = engine()->globalObject();
|
||||
|
||||
|
||||
// Save string handles for quick lookup
|
||||
_name = engine()->toStringHandle(CLASS_NAME.toLatin1());
|
||||
_byteLength = engine()->toStringHandle(BYTE_LENGTH_PROPERTY_NAME.toLatin1());
|
||||
|
||||
|
||||
// build prototype
|
||||
_proto = engine()->newQObject(new ArrayBufferPrototype(this),
|
||||
QScriptEngine::QtOwnership,
|
||||
|
@ -45,13 +45,13 @@ QScriptClass(scriptEngine) {
|
|||
QScriptEngine::ExcludeSuperClassMethods |
|
||||
QScriptEngine::ExcludeSuperClassProperties);
|
||||
_proto.setPrototype(global.property("Object").property("prototype"));
|
||||
|
||||
|
||||
// Register constructor
|
||||
_ctor = engine()->newFunction(construct, _proto);
|
||||
_ctor.setData(engine()->toScriptValue(this));
|
||||
|
||||
|
||||
engine()->globalObject().setProperty(name(), _ctor);
|
||||
|
||||
|
||||
// Registering other array types
|
||||
// The script engine is there parent so it'll delete them with itself
|
||||
new DataViewClass(scriptEngine);
|
||||
|
@ -101,16 +101,16 @@ QScriptValue ArrayBufferClass::construct(QScriptContext* context, QScriptEngine*
|
|||
if (!arg.isValid() || !arg.isNumber()) {
|
||||
return QScriptValue();
|
||||
}
|
||||
|
||||
|
||||
quint32 size = arg.toInt32();
|
||||
QScriptValue newObject = cls->newInstance(size);
|
||||
|
||||
|
||||
if (context->isCalledAsConstructor()) {
|
||||
// if called with keyword new, replace this object.
|
||||
context->setThisObject(newObject);
|
||||
return engine->undefinedValue();
|
||||
}
|
||||
|
||||
|
||||
return newObject;
|
||||
}
|
||||
|
||||
|
|
|
@ -139,7 +139,7 @@ static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine) {
|
|||
QString fileName = contextInfo.fileName();
|
||||
int lineNumber = contextInfo.lineNumber();
|
||||
QString functionName = contextInfo.functionName();
|
||||
|
||||
|
||||
location = functionName;
|
||||
if (!fileName.isEmpty()) {
|
||||
if (location.isEmpty()) {
|
||||
|
@ -155,10 +155,10 @@ static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine) {
|
|||
if (location.isEmpty()) {
|
||||
location = scriptEngine->getFilename();
|
||||
}
|
||||
|
||||
|
||||
// give the script engine a chance to notify the system about this message
|
||||
scriptEngine->print(message);
|
||||
|
||||
|
||||
// send the message to debug log
|
||||
qCDebug(scriptengine_script, "[%s] %s", qUtf8Printable(location), qUtf8Printable(message));
|
||||
} else {
|
||||
|
@ -366,20 +366,20 @@ void ScriptEngine::executeOnScriptThread(std::function<void()> function, const Q
|
|||
void ScriptEngine::waitTillDoneRunning(bool shutdown) {
|
||||
// Engine should be stopped already, but be defensive
|
||||
stop();
|
||||
|
||||
|
||||
auto workerThread = thread();
|
||||
|
||||
|
||||
if (workerThread == QThread::currentThread()) {
|
||||
qCWarning(scriptengine) << "ScriptEngine::waitTillDoneRunning called, but the script is on the same thread:" << getFilename();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (_isThreaded && workerThread) {
|
||||
// We should never be waiting (blocking) on our own thread
|
||||
assert(workerThread != QThread::currentThread());
|
||||
|
||||
#if 0
|
||||
// 26 Feb 2021 - Disabled this OSX-specific code because it causes OSX to crash on shutdown; without this code, OSX
|
||||
// 26 Feb 2021 - Disabled this OSX-specific code because it causes OSX to crash on shutdown; without this code, OSX
|
||||
// doesn't crash on shutdown. Qt 5.12.3 and Qt 5.15.2.
|
||||
//
|
||||
// On mac, don't call QCoreApplication::processEvents() here. This is to prevent
|
||||
|
@ -1042,7 +1042,7 @@ void ScriptEngine::addEventHandler(const EntityItemID& entityID, const QString&
|
|||
};
|
||||
|
||||
/*@jsdoc
|
||||
* <p>The name of an entity event. When the entity event occurs, any function that has been registered for that event
|
||||
* <p>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.</p>
|
||||
* <table>
|
||||
* <thead>
|
||||
|
@ -1338,7 +1338,7 @@ void ScriptEngine::run() {
|
|||
|
||||
emit finished(_fileNameString, qSharedPointerCast<ScriptEngine>(sharedFromThis()));
|
||||
|
||||
// Don't leave our local-file-access flag laying around, reset it to false when the scriptengine
|
||||
// Don't leave our local-file-access flag laying around, reset it to false when the scriptengine
|
||||
// thread is finished
|
||||
hifi::scripting::setLocalAccessSafeThread(false);
|
||||
_isRunning = false;
|
||||
|
@ -1852,7 +1852,7 @@ QScriptValue ScriptEngine::require(const QString& moduleId) {
|
|||
// modules get cached in `Script.require.cache` and (similar to Node.js) users can access it
|
||||
// to inspect particular entries and invalidate them by deleting the key:
|
||||
// `delete Script.require.cache[Script.require.resolve(moduleId)];`
|
||||
|
||||
|
||||
// Check to see if we should invalidate the cache based on a user setting.
|
||||
Setting::Handle<bool> getCachebustSetting {"cachebustScriptRequire", false };
|
||||
|
||||
|
@ -2390,25 +2390,25 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co
|
|||
|
||||
// Entity Script Whitelist toggle check.
|
||||
Setting::Handle<bool> whitelistEnabled {"private/whitelistEnabled", false };
|
||||
|
||||
|
||||
if (!whitelistEnabled.get()) {
|
||||
passList = true;
|
||||
}
|
||||
|
||||
|
||||
// Pull SAFEURLS from the Interface.JSON settings.
|
||||
QVariant raw = Setting::Handle<QVariant>("private/settingsSafeURLS").get();
|
||||
QStringList settingsSafeURLS = raw.toString().trimmed().split(QRegExp("\\s*[,\r\n]+\\s*"), Qt::SkipEmptyParts);
|
||||
safeURLPrefixes += settingsSafeURLS;
|
||||
// END Pull SAFEURLS from the Interface.JSON settings.
|
||||
|
||||
|
||||
// Get current domain whitelist bypass, in case an entire domain is whitelisted.
|
||||
QString currentDomain = DependencyManager::get<AddressManager>()->getDomainURL().host();
|
||||
|
||||
|
||||
QString domainSafeIP = nodeList->getDomainHandler().getHostname();
|
||||
QString domainSafeURL = URL_SCHEME_VIRCADIA + "://" + currentDomain;
|
||||
for (const auto& str : safeURLPrefixes) {
|
||||
if (domainSafeURL.startsWith(str) || domainSafeIP.startsWith(str)) {
|
||||
qCDebug(scriptengine) << whitelistPrefix << "Whitelist Bypassed, entire domain is whitelisted. Current Domain Host: "
|
||||
qCDebug(scriptengine) << whitelistPrefix << "Whitelist Bypassed, entire domain is whitelisted. Current Domain Host: "
|
||||
<< nodeList->getDomainHandler().getHostname()
|
||||
<< "Current Domain: " << currentDomain;
|
||||
passList = true;
|
||||
|
|
|
@ -58,15 +58,15 @@ WheelEvent::WheelEvent(const QWheelEvent& event) {
|
|||
* @typedef {object} WheelEvent
|
||||
* @property {number} x - Integer x-coordinate of the event on the Interface window or HMD HUD.
|
||||
* @property {number} y - Integer y-coordinate of the event on the Interface window or HMD HUD.
|
||||
* @property {number} delta - Integer number indicating the direction and speed to scroll: positive numbers to scroll up, and
|
||||
* @property {number} delta - Integer number indicating the direction and speed to scroll: positive numbers to scroll up, and
|
||||
* negative numers to scroll down.
|
||||
* @property {string} orientation - The orientation of the wheel: <code>"VERTICAL"</code> for a typical mouse;
|
||||
* @property {string} orientation - The orientation of the wheel: <code>"VERTICAL"</code> for a typical mouse;
|
||||
* <code>"HORIZONTAL"</code> for a "horizontal" wheel.
|
||||
* @property {boolean} isLeftButton - <code>true</code> if the left button was pressed when the event was generated, otherwise
|
||||
* @property {boolean} isLeftButton - <code>true</code> if the left button was pressed when the event was generated, otherwise
|
||||
* <code>false</code>.
|
||||
* @property {boolean} isMiddleButton - <code>true</code> if the middle button was pressed when the event was generated,
|
||||
* @property {boolean} isMiddleButton - <code>true</code> if the middle button was pressed when the event was generated,
|
||||
* otherwise <code>false</code>.
|
||||
* @property {boolean} isRightButton - <code>true</code> if the right button was pressed when the event was generated,
|
||||
* @property {boolean} isRightButton - <code>true</code> if the right button was pressed when the event was generated,
|
||||
* otherwise <code>false</code>.
|
||||
* @property {boolean} isShifted - <code>true</code> if the Shift key was pressed when the event was generated, otherwise
|
||||
* <code>false</code>.
|
||||
|
|
|
@ -258,6 +258,6 @@ void LogHandler::printRepeatedMessage(int messageID, LogMsgType type, const QMes
|
|||
} else {
|
||||
_repeatedMessageRecords[messageID].repeatString = message;
|
||||
}
|
||||
|
||||
|
||||
++_repeatedMessageRecords[messageID].repeatCount;
|
||||
}
|
||||
|
|
|
@ -95,7 +95,7 @@ private:
|
|||
} while (false)
|
||||
|
||||
#define HIFI_FDEBUG(message) HIFI_FCDEBUG((*QLoggingCategory::defaultCategory()), message)
|
||||
|
||||
|
||||
#define HIFI_FCDEBUG_ID(category, messageID, message) \
|
||||
do { \
|
||||
if (category.isDebugEnabled()) { \
|
||||
|
|
|
@ -738,7 +738,7 @@ QString formatSecTime(qint64 secs) {
|
|||
QString formatSecondsElapsed(float seconds) {
|
||||
QString result;
|
||||
|
||||
const float SECONDS_IN_DAY = 60.0f * 60.0f * 24.0f;
|
||||
const float SECONDS_IN_DAY = 60.0f * 60.0f * 24.0f;
|
||||
if (seconds > SECONDS_IN_DAY) {
|
||||
float days = floor(seconds / SECONDS_IN_DAY);
|
||||
float rest = seconds - (days * SECONDS_IN_DAY);
|
||||
|
@ -978,7 +978,7 @@ bool getProcessorInfo(ProcessorInfo& info) {
|
|||
break;
|
||||
|
||||
case RelationCache:
|
||||
// Cache data is in ptr->Cache, one CACHE_DESCRIPTOR structure for each cache.
|
||||
// Cache data is in ptr->Cache, one CACHE_DESCRIPTOR structure for each cache.
|
||||
Cache = &ptr->Cache;
|
||||
if (Cache->Level == 1) {
|
||||
processorL1CacheCount++;
|
||||
|
|
Loading…
Reference in a new issue