Merge pull request #16301 from dooglifeSF/drivekey_anim_triggers

Drivekey anim triggers
This commit is contained in:
Brad Hefta-Gaub 2019-10-09 18:25:10 -07:00 committed by GitHub
commit 1316f9b046
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 106 additions and 55 deletions

View file

@ -5244,23 +5244,23 @@
"transitions": [
{
"state": "idle",
"var": "isNotMoving"
"var": "isNotInput"
},
{
"state": "WALKFWD",
"var": "isMovingForward"
"var": "isInputForward"
},
{
"state": "WALKBWD",
"var": "isMovingBackward"
"var": "isInputBackward"
},
{
"state": "STRAFERIGHT",
"var": "isMovingRight"
"var": "isInputRight"
},
{
"state": "STRAFELEFT",
"var": "isMovingLeft"
"var": "isInputLeft"
},
{
"state": "turnRight",
@ -5313,19 +5313,19 @@
"transitions": [
{
"state": "WALKFWD",
"var": "isMovingForward"
"var": "isInputForward"
},
{
"state": "WALKBWD",
"var": "isMovingBackward"
"var": "isInputBackward"
},
{
"state": "STRAFERIGHT",
"var": "isMovingRight"
"var": "isInputRight"
},
{
"state": "STRAFELEFT",
"var": "isMovingLeft"
"var": "isInputLeft"
},
{
"state": "turnRight",
@ -5380,19 +5380,19 @@
},
{
"state": "idle",
"var": "isNotMoving"
"var": "isNotInput"
},
{
"state": "WALKBWD",
"var": "isMovingBackward"
"var": "isInputBackward"
},
{
"state": "STRAFERIGHT",
"var": "isMovingRight"
"var": "isInputRight"
},
{
"state": "STRAFELEFT",
"var": "isMovingLeft"
"var": "isInputLeft"
},
{
"state": "turnRight",
@ -5469,19 +5469,19 @@
},
{
"state": "WALKFWD",
"var": "isMovingForward"
"var": "isInputForward"
},
{
"state": "WALKBWD",
"var": "isMovingBackward"
"var": "isInputBackward"
},
{
"state": "STRAFERIGHT",
"var": "isMovingRight"
"var": "isInputRight"
},
{
"state": "STRAFELEFT",
"var": "isMovingLeft"
"var": "isInputLeft"
},
{
"state": "strafeRightHmd",
@ -5533,19 +5533,19 @@
"transitions": [
{
"state": "idleSettle",
"var": "isNotMoving"
"var": "isNotInput"
},
{
"state": "WALKBWD",
"var": "isMovingBackward"
"var": "isInputBackward"
},
{
"state": "STRAFERIGHT",
"var": "isMovingRight"
"var": "isInputRight"
},
{
"state": "STRAFELEFT",
"var": "isMovingLeft"
"var": "isInputLeft"
},
{
"state": "turnRight",
@ -5597,19 +5597,19 @@
"transitions": [
{
"state": "idleSettle",
"var": "isNotMoving"
"var": "isNotInput"
},
{
"state": "WALKFWD",
"var": "isMovingForward"
"var": "isInputForward"
},
{
"state": "STRAFERIGHT",
"var": "isMovingRight"
"var": "isInputRight"
},
{
"state": "STRAFELEFT",
"var": "isMovingLeft"
"var": "isInputLeft"
},
{
"state": "turnRight",
@ -5661,19 +5661,19 @@
"transitions": [
{
"state": "idleSettle",
"var": "isNotMoving"
"var": "isNotInput"
},
{
"state": "WALKFWD",
"var": "isMovingForward"
"var": "isInputForward"
},
{
"state": "WALKBWD",
"var": "isMovingBackward"
"var": "isInputBackward"
},
{
"state": "STRAFELEFT",
"var": "isMovingLeft"
"var": "isInputLeft"
},
{
"state": "turnRight",
@ -5725,19 +5725,19 @@
"transitions": [
{
"state": "idleSettle",
"var": "isNotMoving"
"var": "isNotInput"
},
{
"state": "WALKFWD",
"var": "isMovingForward"
"var": "isInputForward"
},
{
"state": "WALKBWD",
"var": "isMovingBackward"
"var": "isInputBackward"
},
{
"state": "STRAFERIGHT",
"var": "isMovingRight"
"var": "isInputRight"
},
{
"state": "turnRight",
@ -5794,19 +5794,19 @@
},
{
"state": "WALKFWD",
"var": "isMovingForward"
"var": "isInputForward"
},
{
"state": "WALKBWD",
"var": "isMovingBackward"
"var": "isInputBackward"
},
{
"state": "STRAFERIGHT",
"var": "isMovingRight"
"var": "isInputRight"
},
{
"state": "STRAFELEFT",
"var": "isMovingLeft"
"var": "isInputLeft"
},
{
"state": "turnLeft",
@ -5859,19 +5859,19 @@
},
{
"state": "WALKFWD",
"var": "isMovingForward"
"var": "isInputForward"
},
{
"state": "WALKBWD",
"var": "isMovingBackward"
"var": "isInputBackward"
},
{
"state": "STRAFERIGHT",
"var": "isMovingRight"
"var": "isInputRight"
},
{
"state": "STRAFELEFT",
"var": "isMovingLeft"
"var": "isInputLeft"
},
{
"state": "turnRight",
@ -5919,15 +5919,15 @@
"transitions": [
{
"state": "idleSettle",
"var": "isNotMoving"
"var": "isNotInput"
},
{
"state": "WALKFWD",
"var": "isMovingForward"
"var": "isInputForward"
},
{
"state": "WALKBWD",
"var": "isMovingBackward"
"var": "isInputBackward"
},
{
"state": "strafeLeftHmd",
@ -5935,11 +5935,11 @@
},
{
"state": "STRAFERIGHT",
"var": "isMovingRight"
"var": "isInputRight"
},
{
"state": "STRAFELEFT",
"var": "isMovingLeft"
"var": "isInputLeft"
},
{
"state": "turnRight",
@ -5983,15 +5983,15 @@
"transitions": [
{
"state": "idleSettle",
"var": "isNotMoving"
"var": "isNotInput"
},
{
"state": "WALKFWD",
"var": "isMovingForward"
"var": "isInputForward"
},
{
"state": "WALKBWD",
"var": "isMovingBackward"
"var": "isInputBackward"
},
{
"state": "strafeRightHmd",
@ -5999,11 +5999,11 @@
},
{
"state": "STRAFERIGHT",
"var": "isMovingRight"
"var": "isInputRight"
},
{
"state": "STRAFELEFT",
"var": "isMovingLeft"
"var": "isInputLeft"
},
{
"state": "turnRight",
@ -6128,19 +6128,19 @@
"transitions": [
{
"state": "WALKFWD",
"var": "isMovingForward"
"var": "isInputForward"
},
{
"state": "WALKBWD",
"var": "isMovingBackward"
"var": "isInputBackward"
},
{
"state": "STRAFERIGHT",
"var": "isMovingRight"
"var": "isInputRight"
},
{
"state": "STRAFELEFT",
"var": "isMovingLeft"
"var": "isInputLeft"
},
{
"state": "turnRight",

View file

@ -315,6 +315,10 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) {
const float TALKING_TIME_THRESHOLD = 0.75f;
params.isTalking = head->getTimeWithoutTalking() <= TALKING_TIME_THRESHOLD;
//pass X and Z input key floats (-1 to 1) to rig
params.inputX = myAvatar->getDriveKey(MyAvatar::TRANSLATE_X);
params.inputZ = myAvatar->getDriveKey(MyAvatar::TRANSLATE_Z);
myAvatar->updateRigControllerParameters(params);
_rig.updateFromControllerParameters(params, deltaTime);

View file

@ -2160,6 +2160,51 @@ void Rig::updateFromControllerParameters(const ControllerParameters& params, flo
}
}
//deadzone constant
const float INPUT_DEADZONE_THRESHOLD = 0.05f;
if (fabsf(params.inputX) <= INPUT_DEADZONE_THRESHOLD && fabsf(params.inputZ) <= INPUT_DEADZONE_THRESHOLD) {
// no WASD input
_animVars.set("isInputForward", false);
_animVars.set("isInputBackward", false);
_animVars.set("isInputRight", false);
_animVars.set("isInputLeft", false);
_animVars.set("isNotInput", true);
} else if (fabsf(params.inputZ) >= fabsf(params.inputX)) {
if (params.inputZ > 0.0f) {
// forward
_animVars.set("isInputForward", true);
_animVars.set("isInputBackward", false);
_animVars.set("isInputRight", false);
_animVars.set("isInputLeft", false);
_animVars.set("isNotInput", false);
} else {
// backward
_animVars.set("isInputForward", false);
_animVars.set("isInputBackward", true);
_animVars.set("isInputRight", false);
_animVars.set("isInputLeft", false);
_animVars.set("isNotInput", false);
}
} else {
if (params.inputX > 0.0f) {
// right
_animVars.set("isInputForward", false);
_animVars.set("isInputBackward", false);
_animVars.set("isInputRight", true);
_animVars.set("isInputLeft", false);
_animVars.set("isNotInput", false);
} else {
// left
_animVars.set("isInputForward", false);
_animVars.set("isInputBackward", false);
_animVars.set("isInputRight", false);
_animVars.set("isInputLeft", true);
_animVars.set("isNotInput", false);
}
}
_headEnabled = params.primaryControllerFlags[PrimaryControllerType_Head] & (uint8_t)ControllerFlags::Enabled;
bool leftHandEnabled = params.primaryControllerFlags[PrimaryControllerType_LeftHand] & (uint8_t)ControllerFlags::Enabled;
bool rightHandEnabled = params.primaryControllerFlags[PrimaryControllerType_RightHand] & (uint8_t)ControllerFlags::Enabled;

View file

@ -88,6 +88,8 @@ public:
AnimPose secondaryControllerPoses[NumSecondaryControllerTypes]; // rig space
uint8_t secondaryControllerFlags[NumSecondaryControllerTypes];
bool isTalking;
float inputX;
float inputZ;
bool reactionEnabledFlags[NUM_AVATAR_BEGIN_END_REACTIONS];
bool reactionTriggers[NUM_AVATAR_TRIGGER_REACTIONS];
HFMJointShapeInfo hipsShapeInfo;