Add sitting clip node

This commit is contained in:
luiscuenca 2019-07-24 10:44:33 -07:00
parent e7e864121f
commit 015d1951fc
No known key found for this signature in database
GPG key ID: 2387ECD129A6961D
3 changed files with 59 additions and 41 deletions
interface

View file

@ -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",

View file

@ -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<DriveKeys> 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();

View file

@ -2537,7 +2537,6 @@ private:
virtual void updatePalms() override {}
void lateUpdatePalms();
QStringList getSitRolesToOverride();
void setSitDriveKeysStatus(bool enabled);
void clampTargetScaleToDomainLimits();