mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 00:36:52 +02:00
Create isNotInputSlow var for stategraph switch when no input and speed less than 1.5 m/s
This commit is contained in:
parent
3102a6ff08
commit
a043f0a17e
3 changed files with 71 additions and 53 deletions
|
@ -5251,7 +5251,7 @@
|
||||||
{
|
{
|
||||||
"easingType": "easeInOutQuad",
|
"easingType": "easeInOutQuad",
|
||||||
"id": "idle",
|
"id": "idle",
|
||||||
"interpDuration": 20,
|
"interpDuration": 15,
|
||||||
"interpTarget": 20,
|
"interpTarget": 20,
|
||||||
"interpType": "evaluateBoth",
|
"interpType": "evaluateBoth",
|
||||||
"transitions": [
|
"transitions": [
|
||||||
|
@ -5383,8 +5383,8 @@
|
||||||
{
|
{
|
||||||
"easingType": "easeInOutQuad",
|
"easingType": "easeInOutQuad",
|
||||||
"id": "idleSettle",
|
"id": "idleSettle",
|
||||||
"interpDuration": 15,
|
"interpDuration": 13,
|
||||||
"interpTarget": 15,
|
"interpTarget": 14,
|
||||||
"interpType": "snapshotPrev",
|
"interpType": "snapshotPrev",
|
||||||
"transitions": [
|
"transitions": [
|
||||||
{
|
{
|
||||||
|
@ -5477,7 +5477,7 @@
|
||||||
"transitions": [
|
"transitions": [
|
||||||
{
|
{
|
||||||
"state": "idleSettle",
|
"state": "idleSettle",
|
||||||
"var": "isNotInput"
|
"var": "isNotInputSlow"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"state": "WALKBWD",
|
"state": "WALKBWD",
|
||||||
|
@ -5541,7 +5541,7 @@
|
||||||
"transitions": [
|
"transitions": [
|
||||||
{
|
{
|
||||||
"state": "idleSettle",
|
"state": "idleSettle",
|
||||||
"var": "isNotInput"
|
"var": "isNotInputSlow"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"state": "WALKFWD",
|
"state": "WALKFWD",
|
||||||
|
@ -5605,7 +5605,7 @@
|
||||||
"transitions": [
|
"transitions": [
|
||||||
{
|
{
|
||||||
"state": "idleSettle",
|
"state": "idleSettle",
|
||||||
"var": "isNotInput"
|
"var": "isNotInputSlow"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"state": "WALKFWD",
|
"state": "WALKFWD",
|
||||||
|
@ -5669,7 +5669,7 @@
|
||||||
"transitions": [
|
"transitions": [
|
||||||
{
|
{
|
||||||
"state": "idleSettle",
|
"state": "idleSettle",
|
||||||
"var": "isNotInput"
|
"var": "isNotInputSlow"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"state": "WALKFWD",
|
"state": "WALKFWD",
|
||||||
|
|
|
@ -1432,6 +1432,68 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos
|
||||||
}
|
}
|
||||||
_lastEnableInverseKinematics = _enableInverseKinematics;
|
_lastEnableInverseKinematics = _enableInverseKinematics;
|
||||||
|
|
||||||
|
|
||||||
|
//stategraph vars based on input
|
||||||
|
const float INPUT_DEADZONE_THRESHOLD = 0.05f;
|
||||||
|
|
||||||
|
if (fabsf(_previousControllerParameters.inputX) <= INPUT_DEADZONE_THRESHOLD &&
|
||||||
|
fabsf(_previousControllerParameters.inputZ) <= INPUT_DEADZONE_THRESHOLD) {
|
||||||
|
// no WASD input
|
||||||
|
if (fabsf(forwardSpeed) <= 1.5f && fabsf(lateralSpeed) <= 1.5f) {
|
||||||
|
_animVars.set("isInputForward", false);
|
||||||
|
_animVars.set("isInputBackward", false);
|
||||||
|
_animVars.set("isInputRight", false);
|
||||||
|
_animVars.set("isInputLeft", false);
|
||||||
|
_animVars.set("isNotInput", true);
|
||||||
|
_animVars.set("isNotInputSlow", true);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
_animVars.set("isInputForward", false);
|
||||||
|
_animVars.set("isInputBackward", false);
|
||||||
|
_animVars.set("isInputRight", false);
|
||||||
|
_animVars.set("isInputLeft", false);
|
||||||
|
_animVars.set("isNotInput", true);
|
||||||
|
_animVars.set("isNotInputSlow", false);
|
||||||
|
}
|
||||||
|
} else if (fabsf(_previousControllerParameters.inputZ) >= fabsf(_previousControllerParameters.inputX)) {
|
||||||
|
if (_previousControllerParameters.inputZ > 0.0f) {
|
||||||
|
// forward
|
||||||
|
_animVars.set("isInputForward", true);
|
||||||
|
_animVars.set("isInputBackward", false);
|
||||||
|
_animVars.set("isInputRight", false);
|
||||||
|
_animVars.set("isInputLeft", false);
|
||||||
|
_animVars.set("isNotInput", false);
|
||||||
|
_animVars.set("isNotInputSlow", false);
|
||||||
|
} else {
|
||||||
|
// backward
|
||||||
|
_animVars.set("isInputForward", false);
|
||||||
|
_animVars.set("isInputBackward", true);
|
||||||
|
_animVars.set("isInputRight", false);
|
||||||
|
_animVars.set("isInputLeft", false);
|
||||||
|
_animVars.set("isNotInput", false);
|
||||||
|
_animVars.set("isNotInputSlow", false);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (_previousControllerParameters.inputX > 0.0f) {
|
||||||
|
// right
|
||||||
|
_animVars.set("isInputForward", false);
|
||||||
|
_animVars.set("isInputBackward", false);
|
||||||
|
_animVars.set("isInputRight", true);
|
||||||
|
_animVars.set("isInputLeft", false);
|
||||||
|
_animVars.set("isNotInput", false);
|
||||||
|
_animVars.set("isNotInputSlow", false);
|
||||||
|
} else {
|
||||||
|
// left
|
||||||
|
_animVars.set("isInputForward", false);
|
||||||
|
_animVars.set("isInputBackward", false);
|
||||||
|
_animVars.set("isInputRight", false);
|
||||||
|
_animVars.set("isInputLeft", true);
|
||||||
|
_animVars.set("isNotInput", false);
|
||||||
|
_animVars.set("isNotInputSlow", false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
_lastForward = forward;
|
_lastForward = forward;
|
||||||
_lastPosition = worldPosition;
|
_lastPosition = worldPosition;
|
||||||
|
@ -2160,50 +2222,6 @@ 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;
|
_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;
|
||||||
|
|
|
@ -88,8 +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 inputX = 0.0f;
|
||||||
float inputZ;
|
float inputZ = 0.0f;
|
||||||
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;
|
||||||
|
|
Loading…
Reference in a new issue