Working on basic Faceshift drive.

This commit is contained in:
Andrzej Kapolka 2013-11-18 18:06:01 -08:00
parent f59b403103
commit 5e933b0815
3 changed files with 19 additions and 0 deletions

View file

@ -333,6 +333,7 @@ Menu::Menu() :
false,
appInstance->getFaceshift(),
SLOT(setTCPEnabled(bool)));
addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::FaceshiftDrive, 0, false);
addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::ChatCircling, 0, true);
QMenu* webcamOptionsMenu = developerMenu->addMenu("Webcam Options");
@ -361,6 +362,7 @@ Menu::Menu() :
addCheckableActionToQMenuAndActionHash(raveGloveOptionsMenu, MenuOption::SimulateLeapHand);
addCheckableActionToQMenuAndActionHash(raveGloveOptionsMenu, MenuOption::DisplayLeapHands, 0, true);
addCheckableActionToQMenuAndActionHash(raveGloveOptionsMenu, MenuOption::LeapDrive, 0, false);
addCheckableActionToQMenuAndActionHash(raveGloveOptionsMenu, MenuOption::TestRaveGlove);
QMenu* trackingOptionsMenu = developerMenu->addMenu("Tracking Options");

View file

@ -172,6 +172,7 @@ namespace MenuOption {
const QString DontFadeOnVoxelServerChanges = "Don't Fade In/Out on Voxel Server Changes";
const QString HeadMouse = "Head Mouse";
const QString FaceMode = "Cycle Face Mode";
const QString FaceshiftDrive = "Faceshift Drive";
const QString FaceshiftTCP = "Faceshift (TCP)";
const QString FalseColorByDistance = "FALSE Color By Distance";
const QString FalseColorBySource = "FALSE Color By Source";
@ -198,6 +199,7 @@ namespace MenuOption {
const QString GoHome = "Go Home";
const QString Gravity = "Use Gravity";
const QString ParticleCloud = "Particle Cloud";
const QString LeapDrive = "Leap Drive";
const QString LodTools = "LOD Tools";
const QString Log = "Log";
const QString Login = "Login";

View file

@ -10,6 +10,7 @@
#include <SharedUtil.h>
#include "Application.h"
#include "Faceshift.h"
#include "Menu.h"
#include "Util.h"
@ -80,6 +81,20 @@ void Faceshift::update() {
}
_estimatedEyePitch = eulers.x - _longTermAverageEyePitch;
_estimatedEyeYaw = eulers.y - _longTermAverageEyeYaw;
// if Faceshift drive is enabled, set the avatar drive based on the head position
if (!Menu::getInstance()->isOptionChecked(MenuOption::FaceshiftDrive)) {
return;
}
MyAvatar* avatar = Application::getInstance()->getAvatar();
const float DRIVE_SCALE = 1.0f;
const float DEAD_ZONE = 0.1f;
avatar->setDriveKeys(FWD, qMax(0.0f, -_headTranslation.z * DRIVE_SCALE - DEAD_ZONE));
avatar->setDriveKeys(BACK, qMax(0.0f, _headTranslation.z * DRIVE_SCALE - DEAD_ZONE));
avatar->setDriveKeys(LEFT, qMax(0.0f, -_headTranslation.x * DRIVE_SCALE - DEAD_ZONE));
avatar->setDriveKeys(RIGHT, qMax(0.0f, _headTranslation.x * DRIVE_SCALE - DEAD_ZONE));
avatar->setDriveKeys(UP, qMax(0.0f, _headTranslation.y * DRIVE_SCALE - DEAD_ZONE));
avatar->setDriveKeys(DOWN, qMax(0.0f, -_headTranslation.y * DRIVE_SCALE - DEAD_ZONE));
}
void Faceshift::reset() {