mirror of
https://github.com/overte-org/overte.git
synced 2025-04-22 16:13:28 +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::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");
|
||||
|
||||
addCheckableActionToQMenuAndActionHash(handOptionsMenu,
|
||||
|
|
|
@ -397,6 +397,9 @@ namespace MenuOption {
|
|||
const QString SettingsExport = "Export Settings";
|
||||
const QString SettingsImport = "Import Settings";
|
||||
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 ShowBordersModelNodes = "Show Model Nodes";
|
||||
const QString ShowBordersParticleNodes = "Show Particle Nodes";
|
||||
|
|
|
@ -113,8 +113,16 @@ void SixenseManager::update(float deltaTime) {
|
|||
|
||||
|
||||
// Emulate the mouse so we can use scripts
|
||||
if (numActiveControllers == 2) {
|
||||
emulateMouse(palm);
|
||||
if (Menu::getInstance()->isOptionChecked(MenuOption::SixenseMouseInput)) {
|
||||
if (Menu::getInstance()->isOptionChecked(MenuOption::SixenseLeftHanded)) {
|
||||
if (numActiveControllers == 1){
|
||||
emulateMouse(palm);
|
||||
}
|
||||
} else {
|
||||
if (numActiveControllers == 2) {
|
||||
emulateMouse(palm);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: Sixense API returns pos data in millimeters but we IMMEDIATELY convert to meters.
|
||||
|
@ -348,16 +356,28 @@ void SixenseManager::emulateMouse(PalmData *palm) {
|
|||
}
|
||||
_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 )
|
||||
if (palm->getControllerButtons() & BUTTON_FWD) {
|
||||
if (!_bumperPressed) {
|
||||
_bumperPressed = true;
|
||||
QMouseEvent mouseEvent(QEvent::MouseButtonPress, pos, Qt::RightButton, Qt::RightButton, 0);
|
||||
|
||||
QMouseEvent mouseEvent(QEvent::MouseButtonPress, pos, bumperButton, bumperButton, 0);
|
||||
|
||||
Application::getInstance()->mousePressEvent(&mouseEvent);
|
||||
}
|
||||
} 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);
|
||||
|
||||
|
@ -368,17 +388,20 @@ void SixenseManager::emulateMouse(PalmData *palm) {
|
|||
if (palm->getTrigger() == 1.0f) {
|
||||
if (!_triggerPressed) {
|
||||
_triggerPressed = true;
|
||||
QMouseEvent mouseEvent(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, 0);
|
||||
|
||||
QMouseEvent mouseEvent(QEvent::MouseButtonPress, pos, triggerButton, triggerButton, 0);
|
||||
|
||||
Application::getInstance()->mousePressEvent(&mouseEvent);
|
||||
}
|
||||
} 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);
|
||||
|
||||
_triggerPressed = false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif // HAVE_SIXENSE
|
||||
|
|
|
@ -45,7 +45,12 @@ void renderControllerPointer()
|
|||
int numberOfPalms = handData->getNumPalms();
|
||||
|
||||
|
||||
int palmIndex = 3;
|
||||
int palmIndex;
|
||||
if (Menu::getInstance()->isOptionChecked(MenuOption::SixenseLeftHanded)) {
|
||||
palmIndex = 2;
|
||||
} else {
|
||||
palmIndex = 3;
|
||||
}
|
||||
const PalmData* palmData = NULL;
|
||||
|
||||
if (palmIndex >= handData->getPalms().size()) {
|
||||
|
@ -326,7 +331,8 @@ void ApplicationOverlay::renderOverlay(bool renderToTexture) {
|
|||
glVertex2i(mouseX + crossPad, mouseY - pointerHeight);
|
||||
|
||||
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();
|
||||
}
|
||||
glPopMatrix();
|
||||
|
|
Loading…
Reference in a new issue