3
0
Fork 0
mirror of https://github.com/lubosz/overte.git synced 2025-04-27 19:55:28 +02:00

Merge remote-tracking branch 'upstream/master' into HEAD

Conflicts:
	libraries/input-plugins/src/input-plugins/SixenseManager.cpp
This commit is contained in:
Brad Davis 2015-10-27 09:41:58 -07:00
commit ef2d71e576
6 changed files with 22 additions and 7 deletions
libraries
tests
render-utils
shaders

View file

@ -366,7 +366,7 @@ const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars
if (offsetLength > MIN_HIPS_OFFSET_LENGTH) {
// but only if offset is long enough
float scaleFactor = ((offsetLength - MIN_HIPS_OFFSET_LENGTH) / offsetLength);
_relativePoses[0].trans = underPoses[0].trans + scaleFactor * _hipsOffset;
_relativePoses[_hipsIndex].trans = underPoses[_hipsIndex].trans + scaleFactor * _hipsOffset;
}
solveWithCyclicCoordinateDescent(targets);
@ -758,8 +758,10 @@ void AnimInverseKinematics::setSkeletonInternal(AnimSkeleton::ConstPointer skele
if (skeleton) {
initConstraints();
_headIndex = _skeleton->nameToJointIndex("Head");
_hipsIndex = _skeleton->nameToJointIndex("Hips");
} else {
clearConstraints();
_headIndex = -1;
_hipsIndex = -1;
}
}

View file

@ -80,6 +80,7 @@ protected:
// experimental data for moving hips during IK
int _headIndex = -1;
int _hipsIndex = -1;
glm::vec3 _hipsOffset = Vectors::ZERO;
// _maxTargetIndex is tracked to help optimize the recalculation of absolute poses

View file

@ -177,14 +177,26 @@ void SixenseManager::update(float deltaTime, bool jointsCaptured) {
auto userInputMapper = DependencyManager::get<controller::UserInputMapper>();
if (sixenseGetNumActiveControllers() == 0) {
_poseStateMap.clear();
_collectedSamples.clear();
if (_hydrasConnected) {
qCDebug(inputplugins) << "hydra disconnected" << _badDataCount;
if (_badDataCount++ < _allowedBadDataCount) { // gotta get some no-active in a row before we shut things down
return;
}
}
_hydrasConnected = false;
if (_deviceID != 0) {
userInputMapper->removeDevice(_deviceID);
_deviceID = 0;
_poseStateMap.clear();
_collectedSamples.clear();
}
return;
}
PerformanceTimer perfTimer("sixense");
if (!_hydrasConnected) {
_hydrasConnected = true;
_badDataCount = 0;
UserActivityLogger::getInstance().connectedDevice("spatial_controller", "hydra");
}
@ -588,6 +600,7 @@ void SixenseManager::saveSettings() const {
settings.setVec3Value(QString("avatarPosition"), _avatarPosition);
settings.setQuatValue(QString("avatarRotation"), _avatarRotation);
settings.setValue(QString("reachLength"), QVariant(_reachLength));
settings.setValue(QString("allowedHydraFailures"), 120);
}
settings.endGroup();
}
@ -600,6 +613,7 @@ void SixenseManager::loadSettings() {
settings.getVec3ValueIfValid(QString("avatarPosition"), _avatarPosition);
settings.getQuatValueIfValid(QString("avatarRotation"), _avatarRotation);
settings.getFloatValueIfValid(QString("reachLength"), _reachLength);
_allowedBadDataCount = settings.value(QString("allowedHydraFailures"), 120).toInt();
}
settings.endGroup();
}

View file

@ -108,6 +108,8 @@ private:
#endif
bool _hydrasConnected;
int _badDataCount;
int _allowedBadDataCount;
static const QString NAME;
static const QString HYDRA_ID_STRING;

View file

@ -8,6 +8,4 @@ set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/")
# link in the shared libraries
link_hifi_libraries(render-utils gpu shared)
message(${PROJECT_BINARY_DIR})
copy_dlls_beside_windows_executable()

View file

@ -17,6 +17,4 @@ include_directories("${PROJECT_BINARY_DIR}/../../libraries/render-utils/")
include_directories("${PROJECT_BINARY_DIR}/../../libraries/entities-renderer/")
include_directories("${PROJECT_BINARY_DIR}/../../libraries/model/")
message(${PROJECT_BINARY_DIR})
copy_dlls_beside_windows_executable()