Merge pull request #11886 from druiz17/fix-vive-head-pose

Register the Vive inputDevice if no controllers are available
This commit is contained in:
Brad Hefta-Gaub 2017-12-02 12:52:31 -08:00 committed by GitHub
commit ce68b720c2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -337,6 +337,7 @@ void ViveControllerManager::InputDevice::update(float deltaTime, const controlle
_poseStateMap.clear(); _poseStateMap.clear();
_buttonPressedMap.clear(); _buttonPressedMap.clear();
_validTrackedObjects.clear(); _validTrackedObjects.clear();
_trackedControllers = 0;
// While the keyboard is open, we defer strictly to the keyboard values // While the keyboard is open, we defer strictly to the keyboard values
if (isOpenVrKeyboardShown()) { if (isOpenVrKeyboardShown()) {
@ -369,14 +370,12 @@ void ViveControllerManager::InputDevice::update(float deltaTime, const controlle
} }
} }
int numTrackedControllers = 0;
if (leftHandDeviceIndex != vr::k_unTrackedDeviceIndexInvalid) { if (leftHandDeviceIndex != vr::k_unTrackedDeviceIndexInvalid) {
numTrackedControllers++; _trackedControllers++;
} }
if (rightHandDeviceIndex != vr::k_unTrackedDeviceIndexInvalid) { if (rightHandDeviceIndex != vr::k_unTrackedDeviceIndexInvalid) {
numTrackedControllers++; _trackedControllers++;
} }
_trackedControllers = numTrackedControllers;
calibrateFromHandController(inputCalibrationData); calibrateFromHandController(inputCalibrationData);
calibrateFromUI(inputCalibrationData); calibrateFromUI(inputCalibrationData);
@ -527,6 +526,7 @@ void ViveControllerManager::InputDevice::handleTrackedObject(uint32_t deviceInde
// but _validTrackedObjects remain in sensor frame // but _validTrackedObjects remain in sensor frame
_validTrackedObjects.push_back(std::make_pair(poseIndex, pose)); _validTrackedObjects.push_back(std::make_pair(poseIndex, pose));
_trackedControllers++;
} else { } else {
controller::Pose invalidPose; controller::Pose invalidPose;
_poseStateMap[poseIndex] = invalidPose; _poseStateMap[poseIndex] = invalidPose;
@ -758,9 +758,9 @@ void ViveControllerManager::InputDevice::handleHmd(uint32_t deviceIndex, const c
} else { } else {
const mat4& mat = mat4(); const mat4& mat = mat4();
const vec3 zero = vec3(); const vec3 zero = vec3();
handleHeadPoseEvent(inputCalibrationData, mat, zero, zero); handleHeadPoseEvent(inputCalibrationData, mat, zero, zero);
} }
_trackedControllers++;
} }
} }