From 015d1951fc8914d7f1972c6f19f0e577785edc33 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Wed, 24 Jul 2019 10:44:33 -0700 Subject: [PATCH] Add sitting clip node --- .../resources/avatar/avatar-animation.json | 70 +++++++++++++++---- interface/src/avatar/MyAvatar.cpp | 29 +------- interface/src/avatar/MyAvatar.h | 1 - 3 files changed, 59 insertions(+), 41 deletions(-) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index dd6e75a20f..2f063554bb 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -583,6 +583,28 @@ "outputJoints": ["LeftFoot", "RightFoot"], "currentState": "idle", "states": [ + { + "id": "seated", + "interpTarget": 20, + "interpDuration": 8, + "interpType": "snapshotPrev", + "transitions": [ + { "var": "isNotMoving", "state": "idle" }, + { "var": "isMovingForward", "state": "WALKFWD" }, + { "var": "isMovingBackward", "state": "WALKBWD" }, + { "var": "isMovingRight", "state": "STRAFERIGHT" }, + { "var": "isMovingLeft", "state": "STRAFELEFT" }, + { "var": "isTurningRight", "state": "turnRight" }, + { "var": "isTurningLeft", "state": "turnLeft" }, + { "var": "isFlying", "state": "fly" }, + { "var": "isTakeoffStand", "state": "takeoffStand" }, + { "var": "isTakeoffRun", "state": "TAKEOFFRUN" }, + { "var": "isInAirStand", "state": "inAirStand" }, + { "var": "isInAirRun", "state": "INAIRRUN" }, + { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + ] + }, { "id": "idle", "interpTarget": 20, @@ -601,7 +623,8 @@ { "var": "isInAirStand", "state": "inAirStand" }, { "var": "isInAirRun", "state": "INAIRRUN" }, { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isSeated", "state": "seated" } ] }, { @@ -622,7 +645,8 @@ { "var": "isInAirStand", "state": "inAirStand" }, { "var": "isInAirRun", "state": "INAIRRUN" }, { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isSeated", "state": "seated" } ] }, { @@ -644,7 +668,8 @@ { "var": "isTakeoffStand", "state": "takeoffStand" }, { "var": "isTakeoffRun", "state": "TAKEOFFRUN" }, { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "INAIRRUN" } + { "var": "isInAirRun", "state": "INAIRRUN" }, + { "var": "isSeated", "state": "seated" } ] }, { @@ -665,7 +690,8 @@ { "var": "isInAirStand", "state": "inAirStand" }, { "var": "isInAirRun", "state": "INAIRRUN" }, { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isSeated", "state": "seated" } ] }, { @@ -686,7 +712,8 @@ { "var": "isInAirStand", "state": "inAirStand" }, { "var": "isInAirRun", "state": "INAIRRUN" }, { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isSeated", "state": "seated" } ] }, { @@ -707,7 +734,8 @@ { "var": "isInAirStand", "state": "inAirStand" }, { "var": "isInAirRun", "state": "INAIRRUN" }, { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isSeated", "state": "seated" } ] }, { @@ -728,7 +756,8 @@ { "var": "isInAirStand", "state": "inAirStand" }, { "var": "isInAirRun", "state": "INAIRRUN" }, { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isSeated", "state": "seated" } ] }, { @@ -748,7 +777,8 @@ { "var": "isInAirStand", "state": "inAirStand" }, { "var": "isInAirRun", "state": "INAIRRUN" }, { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isSeated", "state": "seated" } ] }, { @@ -768,7 +798,8 @@ { "var": "isInAirStand", "state": "inAirStand" }, { "var": "isInAirRun", "state": "INAIRRUN" }, { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isSeated", "state": "seated" } ] }, { @@ -789,7 +820,8 @@ { "var": "isTakeoffStand", "state": "takeoffStand" }, { "var": "isTakeoffRun", "state": "TAKEOFFRUN" }, { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "INAIRRUN" } + { "var": "isInAirRun", "state": "INAIRRUN" }, + { "var": "isSeated", "state": "seated" } ] }, { @@ -810,7 +842,8 @@ { "var": "isTakeoffStand", "state": "takeoffStand" }, { "var": "isTakeoffRun", "state": "TAKEOFFRUN" }, { "var": "isInAirStand", "state": "inAirStand" }, - { "var": "isInAirRun", "state": "INAIRRUN" } + { "var": "isInAirRun", "state": "INAIRRUN" }, + { "var": "isSeated", "state": "seated" } ] }, { @@ -884,7 +917,8 @@ { "var": "isInAirRun", "state": "INAIRRUN" }, { "var": "landStandOnDone", "state": "idle" }, { "var": "isMovingRightHmd", "state": "strafeRightHmd" }, - { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" } + { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }, + { "var": "isSeated", "state": "seated" } ] }, { @@ -901,6 +935,18 @@ ] }, "children": [ + { + "id": "seated", + "type": "clip", + "data": { + "url": "qrc:///avatar/animations/sitting_idle.fbx", + "startFrame": 1.0, + "endFrame": 350.0, + "timeScale": 1.0, + "loopFlag": true + }, + "children": [] + }, { "id": "idle", "type": "stateMachine", diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index fb7f1a690f..11e2434237 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -6208,17 +6208,6 @@ void MyAvatar::sendPacket(const QUuid& entityID) const { } } -QStringList MyAvatar::getSitRolesToOverride() { - auto allRoles = getAnimationRoles(); - auto sitRolesToOverride = QStringList(); - for (auto role : allRoles) { - if (!(role.startsWith("right") || role.startsWith("left"))) { - sitRolesToOverride.append(role); - } - } - return sitRolesToOverride; -} - void MyAvatar::setSitDriveKeysStatus(bool enabled) { const std::vector DISABLED_DRIVE_KEYS_DURING_SIT = { DriveKeys::TRANSLATE_X, @@ -6245,17 +6234,6 @@ void MyAvatar::beginSit(const glm::vec3& position, const glm::quat& rotation) { _characterController.setSeated(true); setCollisionsEnabled(false); setHMDLeanRecenterEnabled(false); - /* - auto sitRolesToOverride = getSitRolesToOverride(); - for (auto& role: sitRolesToOverride) { // restore roles to prevent overlap - if (_isSeated) { - restoreRoleAnimation(role); - } - overrideRoleAnimation(role, ANIMATION_URL, ANIMATION_FPS, true, - ANIMATION_FIRST_FRAME, ANIMATION_LAST_FRAME); - } - */ - // Disable movement setSitDriveKeysStatus(false); centerBody(); @@ -6268,13 +6246,8 @@ void MyAvatar::beginSit(const glm::vec3& position, const glm::quat& rotation) { void MyAvatar::endSit(const glm::vec3& position, const glm::quat& rotation) { clearPinOnJoint(getJointIndex("Hips")); - /* - auto sitRolesToOverride = getSitRolesToOverride(); - for (auto& role : sitRolesToOverride) { - restoreRoleAnimation(role); - } - */ _characterController.setSeated(false); + _characterController.updateState(); setCollisionsEnabled(true); setHMDLeanRecenterEnabled(true); centerBody(); diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index c456931db2..d952136e8e 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -2537,7 +2537,6 @@ private: virtual void updatePalms() override {} void lateUpdatePalms(); - QStringList getSitRolesToOverride(); void setSitDriveKeysStatus(bool enabled); void clampTargetScaleToDomainLimits();