mirror of
https://github.com/JulianGro/overte.git
synced 2025-06-25 06:49:50 +02:00
Added menu options for sixense mouse input
This commit is contained in:
parent
eff097638c
commit
2fec7400e2
4 changed files with 45 additions and 8 deletions
|
@ -379,6 +379,11 @@ Menu::Menu() :
|
||||||
addCheckableActionToQMenuAndActionHash(oculusOptionsMenu, MenuOption::AllowOculusCameraModeChange, 0, false);
|
addCheckableActionToQMenuAndActionHash(oculusOptionsMenu, MenuOption::AllowOculusCameraModeChange, 0, false);
|
||||||
addCheckableActionToQMenuAndActionHash(oculusOptionsMenu, MenuOption::DisplayOculusOverlays, 0, true);
|
addCheckableActionToQMenuAndActionHash(oculusOptionsMenu, MenuOption::DisplayOculusOverlays, 0, true);
|
||||||
|
|
||||||
|
QMenu* sixenseOptionsMenu = developerMenu->addMenu("Sixense Options");
|
||||||
|
addCheckableActionToQMenuAndActionHash(sixenseOptionsMenu, MenuOption::SixenseMouseInput, 0, true);
|
||||||
|
addCheckableActionToQMenuAndActionHash(sixenseOptionsMenu, MenuOption::SixenseLeftHanded, 0, false);
|
||||||
|
addCheckableActionToQMenuAndActionHash(sixenseOptionsMenu, MenuOption::SixenseInvertInputButtons, 0, false);
|
||||||
|
|
||||||
QMenu* handOptionsMenu = developerMenu->addMenu("Hand Options");
|
QMenu* handOptionsMenu = developerMenu->addMenu("Hand Options");
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(handOptionsMenu,
|
addCheckableActionToQMenuAndActionHash(handOptionsMenu,
|
||||||
|
|
|
@ -397,6 +397,9 @@ namespace MenuOption {
|
||||||
const QString SettingsExport = "Export Settings";
|
const QString SettingsExport = "Export Settings";
|
||||||
const QString SettingsImport = "Import Settings";
|
const QString SettingsImport = "Import Settings";
|
||||||
const QString SimpleShadows = "Simple";
|
const QString SimpleShadows = "Simple";
|
||||||
|
const QString SixenseInvertInputButtons = "Invert Sixense Mouse Input Buttons";
|
||||||
|
const QString SixenseLeftHanded = "Left Handed Sixense Mouse Input";
|
||||||
|
const QString SixenseMouseInput = "Enable Sixense Mouse Input";
|
||||||
const QString ShowBordersVoxelNodes = "Show Voxel Nodes";
|
const QString ShowBordersVoxelNodes = "Show Voxel Nodes";
|
||||||
const QString ShowBordersModelNodes = "Show Model Nodes";
|
const QString ShowBordersModelNodes = "Show Model Nodes";
|
||||||
const QString ShowBordersParticleNodes = "Show Particle Nodes";
|
const QString ShowBordersParticleNodes = "Show Particle Nodes";
|
||||||
|
|
|
@ -113,9 +113,17 @@ void SixenseManager::update(float deltaTime) {
|
||||||
|
|
||||||
|
|
||||||
// Emulate the mouse so we can use scripts
|
// Emulate the mouse so we can use scripts
|
||||||
|
if (Menu::getInstance()->isOptionChecked(MenuOption::SixenseMouseInput)) {
|
||||||
|
if (Menu::getInstance()->isOptionChecked(MenuOption::SixenseLeftHanded)) {
|
||||||
|
if (numActiveControllers == 1){
|
||||||
|
emulateMouse(palm);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (numActiveControllers == 2) {
|
if (numActiveControllers == 2) {
|
||||||
emulateMouse(palm);
|
emulateMouse(palm);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// NOTE: Sixense API returns pos data in millimeters but we IMMEDIATELY convert to meters.
|
// NOTE: Sixense API returns pos data in millimeters but we IMMEDIATELY convert to meters.
|
||||||
glm::vec3 position(data->pos[0], data->pos[1], data->pos[2]);
|
glm::vec3 position(data->pos[0], data->pos[1], data->pos[2]);
|
||||||
|
@ -348,16 +356,28 @@ void SixenseManager::emulateMouse(PalmData *palm) {
|
||||||
}
|
}
|
||||||
_oldPos = pos;
|
_oldPos = pos;
|
||||||
|
|
||||||
|
Qt::MouseButton bumperButton;
|
||||||
|
Qt::MouseButton triggerButton;
|
||||||
|
|
||||||
|
if (Menu::getInstance()->isOptionChecked(MenuOption::SixenseInvertInputButtons)) {
|
||||||
|
bumperButton = Qt::LeftButton;
|
||||||
|
triggerButton = Qt::RightButton;
|
||||||
|
} else {
|
||||||
|
bumperButton = Qt::RightButton;
|
||||||
|
triggerButton = Qt::LeftButton;
|
||||||
|
}
|
||||||
|
|
||||||
//Check for bumper press ( Right Click )
|
//Check for bumper press ( Right Click )
|
||||||
if (palm->getControllerButtons() & BUTTON_FWD) {
|
if (palm->getControllerButtons() & BUTTON_FWD) {
|
||||||
if (!_bumperPressed) {
|
if (!_bumperPressed) {
|
||||||
_bumperPressed = true;
|
_bumperPressed = true;
|
||||||
QMouseEvent mouseEvent(QEvent::MouseButtonPress, pos, Qt::RightButton, Qt::RightButton, 0);
|
|
||||||
|
QMouseEvent mouseEvent(QEvent::MouseButtonPress, pos, bumperButton, bumperButton, 0);
|
||||||
|
|
||||||
Application::getInstance()->mousePressEvent(&mouseEvent);
|
Application::getInstance()->mousePressEvent(&mouseEvent);
|
||||||
}
|
}
|
||||||
} else if (_bumperPressed) {
|
} else if (_bumperPressed) {
|
||||||
QMouseEvent mouseEvent(QEvent::MouseButtonRelease, pos, Qt::RightButton, Qt::RightButton, 0);
|
QMouseEvent mouseEvent(QEvent::MouseButtonRelease, pos, bumperButton, bumperButton, 0);
|
||||||
|
|
||||||
Application::getInstance()->mouseReleaseEvent(&mouseEvent);
|
Application::getInstance()->mouseReleaseEvent(&mouseEvent);
|
||||||
|
|
||||||
|
@ -368,17 +388,20 @@ void SixenseManager::emulateMouse(PalmData *palm) {
|
||||||
if (palm->getTrigger() == 1.0f) {
|
if (palm->getTrigger() == 1.0f) {
|
||||||
if (!_triggerPressed) {
|
if (!_triggerPressed) {
|
||||||
_triggerPressed = true;
|
_triggerPressed = true;
|
||||||
QMouseEvent mouseEvent(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, 0);
|
|
||||||
|
QMouseEvent mouseEvent(QEvent::MouseButtonPress, pos, triggerButton, triggerButton, 0);
|
||||||
|
|
||||||
Application::getInstance()->mousePressEvent(&mouseEvent);
|
Application::getInstance()->mousePressEvent(&mouseEvent);
|
||||||
}
|
}
|
||||||
} else if (_triggerPressed) {
|
} else if (_triggerPressed) {
|
||||||
QMouseEvent mouseEvent(QEvent::MouseButtonRelease, pos, Qt::LeftButton, Qt::LeftButton, 0);
|
QMouseEvent mouseEvent(QEvent::MouseButtonRelease, pos, triggerButton, triggerButton, 0);
|
||||||
|
|
||||||
Application::getInstance()->mouseReleaseEvent(&mouseEvent);
|
Application::getInstance()->mouseReleaseEvent(&mouseEvent);
|
||||||
|
|
||||||
_triggerPressed = false;
|
_triggerPressed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // HAVE_SIXENSE
|
#endif // HAVE_SIXENSE
|
||||||
|
|
|
@ -45,7 +45,12 @@ void renderControllerPointer()
|
||||||
int numberOfPalms = handData->getNumPalms();
|
int numberOfPalms = handData->getNumPalms();
|
||||||
|
|
||||||
|
|
||||||
int palmIndex = 3;
|
int palmIndex;
|
||||||
|
if (Menu::getInstance()->isOptionChecked(MenuOption::SixenseLeftHanded)) {
|
||||||
|
palmIndex = 2;
|
||||||
|
} else {
|
||||||
|
palmIndex = 3;
|
||||||
|
}
|
||||||
const PalmData* palmData = NULL;
|
const PalmData* palmData = NULL;
|
||||||
|
|
||||||
if (palmIndex >= handData->getPalms().size()) {
|
if (palmIndex >= handData->getPalms().size()) {
|
||||||
|
@ -326,7 +331,8 @@ void ApplicationOverlay::renderOverlay(bool renderToTexture) {
|
||||||
glVertex2i(mouseX + crossPad, mouseY - pointerHeight);
|
glVertex2i(mouseX + crossPad, mouseY - pointerHeight);
|
||||||
|
|
||||||
glEnd();
|
glEnd();
|
||||||
} else { //only render controller pointer if we aren't already rendering a mouse pointer
|
} else if (Menu::getInstance()->isOptionChecked(MenuOption::SixenseMouseInput)) {
|
||||||
|
//only render controller pointer if we aren't already rendering a mouse pointer
|
||||||
renderControllerPointer();
|
renderControllerPointer();
|
||||||
}
|
}
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
Loading…
Reference in a new issue