add isInput* and isNotInput vars for use in json, and edit json to use them

This commit is contained in:
dooglifeSF 2019-10-04 15:28:35 -07:00
parent 37afabe866
commit 387f0a3f10
4 changed files with 103 additions and 55 deletions

View file

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

View file

@ -315,6 +315,10 @@ void MySkeletonModel::updateRig(float deltaTime, glm::mat4 parentTransform) {
const float TALKING_TIME_THRESHOLD = 0.75f; const float TALKING_TIME_THRESHOLD = 0.75f;
params.isTalking = head->getTimeWithoutTalking() <= TALKING_TIME_THRESHOLD; 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); myAvatar->updateRigControllerParameters(params);
_rig.updateFromControllerParameters(params, deltaTime); _rig.updateFromControllerParameters(params, deltaTime);

View file

@ -2160,6 +2160,48 @@ void Rig::updateFromControllerParameters(const ControllerParameters& params, flo
} }
} }
//TODO: how to handle multiple inputs? Is there a trick to prioritize fwd/bwd with order of operations?
if (params.inputX) {
if (params.inputX > 0.0f) {
// left
_animVars.set("isInputForward", false);
_animVars.set("isInputBackward", false);
_animVars.set("isInputRight", true);
_animVars.set("isInputLeft", false);
_animVars.set("isNotInput", false);
} else {
// right
_animVars.set("isInputForward", false);
_animVars.set("isInputBackward", false);
_animVars.set("isInputRight", false);
_animVars.set("isInputLeft", true);
_animVars.set("isNotInput", false);
}
} else if (params.inputZ) {
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 && params.inputZ == 0.0f) {
// no WASD input
_animVars.set("isInputForward", false);
_animVars.set("isInputBackward", false);
_animVars.set("isInputRight", false);
_animVars.set("isInputLeft", false);
_animVars.set("isNotInput", true);
}
_headEnabled = params.primaryControllerFlags[PrimaryControllerType_Head] & (uint8_t)ControllerFlags::Enabled; _headEnabled = params.primaryControllerFlags[PrimaryControllerType_Head] & (uint8_t)ControllerFlags::Enabled;
bool leftHandEnabled = params.primaryControllerFlags[PrimaryControllerType_LeftHand] & (uint8_t)ControllerFlags::Enabled; bool leftHandEnabled = params.primaryControllerFlags[PrimaryControllerType_LeftHand] & (uint8_t)ControllerFlags::Enabled;
bool rightHandEnabled = params.primaryControllerFlags[PrimaryControllerType_RightHand] & (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 AnimPose secondaryControllerPoses[NumSecondaryControllerTypes]; // rig space
uint8_t secondaryControllerFlags[NumSecondaryControllerTypes]; uint8_t secondaryControllerFlags[NumSecondaryControllerTypes];
bool isTalking; bool isTalking;
float inputX;
float inputZ;
bool reactionEnabledFlags[NUM_AVATAR_BEGIN_END_REACTIONS]; bool reactionEnabledFlags[NUM_AVATAR_BEGIN_END_REACTIONS];
bool reactionTriggers[NUM_AVATAR_TRIGGER_REACTIONS]; bool reactionTriggers[NUM_AVATAR_TRIGGER_REACTIONS];
HFMJointShapeInfo hipsShapeInfo; HFMJointShapeInfo hipsShapeInfo;