More joystick fixes.

This commit is contained in:
Andrzej Kapolka 2014-05-16 14:24:49 -07:00
parent 4314e42116
commit 956c5d2eb6
2 changed files with 9 additions and 10 deletions

View file

@ -1990,6 +1990,7 @@ void Application::update(float deltaTime) {
_myAvatar->updateLookAtTargetAvatar(); _myAvatar->updateLookAtTargetAvatar();
updateMyAvatarLookAtPosition(); updateMyAvatarLookAtPosition();
_sixenseManager.update(deltaTime); _sixenseManager.update(deltaTime);
_joystickManager.update();
_prioVR.update(deltaTime); _prioVR.update(deltaTime);
updateMyAvatar(deltaTime); // Sample hardware, update view frustum if needed, and send avatar data to mixer/nodes updateMyAvatar(deltaTime); // Sample hardware, update view frustum if needed, and send avatar data to mixer/nodes
updateThreads(deltaTime); // If running non-threaded, then give the threads some time to process... updateThreads(deltaTime); // If running non-threaded, then give the threads some time to process...

View file

@ -63,7 +63,7 @@ static void setPalm(float deltaTime, int index) {
if (!Application::getInstance()->getJoystickManager()->getJoystickStates().isEmpty()) { if (!Application::getInstance()->getJoystickManager()->getJoystickStates().isEmpty()) {
const JoystickState& state = Application::getInstance()->getJoystickManager()->getJoystickStates().at(0); const JoystickState& state = Application::getInstance()->getJoystickManager()->getJoystickStates().at(0);
if (state.axes.size() >= 4 && state.buttons.size() >= 4) { if (state.axes.size() >= 4 && state.buttons.size() >= 4) {
if (index == 0) { if (index == SIXENSE_CONTROLLER_ID_LEFT_HAND) {
palm->setControllerButtons(state.buttons.at(1) ? BUTTON_FWD : 0); palm->setControllerButtons(state.buttons.at(1) ? BUTTON_FWD : 0);
palm->setTrigger(state.buttons.at(0) ? 1.0f : 0.0f); palm->setTrigger(state.buttons.at(0) ? 1.0f : 0.0f);
palm->setJoystick(state.axes.at(0), -state.axes.at(1)); palm->setJoystick(state.axes.at(0), -state.axes.at(1));
@ -71,7 +71,7 @@ static void setPalm(float deltaTime, int index) {
} else { } else {
palm->setControllerButtons(state.buttons.at(3) ? BUTTON_FWD : 0); palm->setControllerButtons(state.buttons.at(3) ? BUTTON_FWD : 0);
palm->setTrigger(state.buttons.at(2) ? 1.0f : 0.0f); palm->setTrigger(state.buttons.at(2) ? 1.0f : 0.0f);
palm->setJoystick(state.axes.at(2), -state.axes.at(3)); palm->setJoystick(state.axes.at(2), -state.axes.at(3));
} }
} }
} }
@ -81,16 +81,16 @@ static void setPalm(float deltaTime, int index) {
Model* skeletonModel = &Application::getInstance()->getAvatar()->getSkeletonModel(); Model* skeletonModel = &Application::getInstance()->getAvatar()->getSkeletonModel();
int jointIndex; int jointIndex;
glm::quat inverseRotation = glm::inverse(skeletonModel->getRotation()); glm::quat inverseRotation = glm::inverse(Application::getInstance()->getAvatar()->getOrientation());
if (index == 0) { if (index == SIXENSE_CONTROLLER_ID_LEFT_HAND) {
jointIndex = skeletonModel->getLeftHandJointIndex(); jointIndex = skeletonModel->getLeftHandJointIndex();
skeletonModel->getJointRotation(jointIndex, rotation, true); skeletonModel->getJointRotation(jointIndex, rotation, true);
rotation = inverseRotation * rotation * glm::quat(glm::vec3(0.0f, -PI_OVER_TWO, 0.0f)); rotation = inverseRotation * rotation * glm::quat(glm::vec3(0.0f, PI_OVER_TWO, 0.0f));
} else { } else {
jointIndex = skeletonModel->getRightHandJointIndex(); jointIndex = skeletonModel->getRightHandJointIndex();
skeletonModel->getJointRotation(jointIndex, rotation, true); skeletonModel->getJointRotation(jointIndex, rotation, true);
rotation = inverseRotation * rotation * glm::quat(glm::vec3(0.0f, PI_OVER_TWO, 0.0f)); rotation = inverseRotation * rotation * glm::quat(glm::vec3(0.0f, -PI_OVER_TWO, 0.0f));
} }
skeletonModel->getJointPosition(jointIndex, position); skeletonModel->getJointPosition(jointIndex, position);
position = inverseRotation * (position - skeletonModel->getTranslation()); position = inverseRotation * (position - skeletonModel->getTranslation());
@ -134,8 +134,6 @@ PrioVR::PrioVR() {
for (int i = 0; i < LIST_LENGTH; i++) { for (int i = 0; i < LIST_LENGTH; i++) {
_humanIKJointIndices.append(jointsDiscovered[i] ? indexOfHumanIKJoint(JOINT_NAMES[i]) : -1); _humanIKJointIndices.append(jointsDiscovered[i] ? indexOfHumanIKJoint(JOINT_NAMES[i]) : -1);
} }
const int INITIAL_RESET_DELAY = 5000;
QTimer::singleShot(INITIAL_RESET_DELAY, this, SLOT(reset()));
#endif #endif
} }
@ -182,8 +180,8 @@ void PrioVR::update(float deltaTime) {
} }
// convert the joysticks into palm data // convert the joysticks into palm data
setPalm(deltaTime, 0); setPalm(deltaTime, SIXENSE_CONTROLLER_ID_LEFT_HAND);
setPalm(deltaTime, 1); setPalm(deltaTime, SIXENSE_CONTROLLER_ID_RIGHT_HAND);
#endif #endif
} }