App::App(QObject *parent) : QObject(parent) { Controller *controller = new Controller(this); MainWindow *mw = new MainWindow(0); mw->hide(); if (!controller->initAR()) { mw->error(tr("Unable to find any usable cameras. " "Check if they are connected"), tr("Camera error")); QApplication::quit(); } mw->showFullScreen(); connect(controller, SIGNAL(setStatus(IplImage*,IplImage*,QList<Model3D*>*)), mw, SLOT(setStatus(IplImage*,IplImage*,QList<Model3D*>*))); connect(controller, SIGNAL(refresh(int,int)), mw, SLOT(refreshValues(int,int))); connect(mw, SIGNAL(languageChanged(QLocale::Language)), controller, SLOT(setLanguage(QLocale::Language))); connect(mw, SIGNAL(nextCamera()), controller, SLOT(nextCamera())); connect(mw, SIGNAL(toggleDebug()), controller, SLOT(toggleDebug())); }
// JoystickListener bool AppFrameListener::buttonPressed( const OIS::JoyStickEvent &arg, int button ) { if(mInputState == INPUTSTATE_INGAME) { switch(mInputMappingManager->getJoyButtonAction(button)) { case JA__NEXT_CAM: { nextCamera(); break; } case JA__DEC_THRUST: { mAirplane->decreaseThrust(); break; } case JA__INC_THRUST: { mAirplane->increaseThrust(); break; } default: break; } return true; } return true; }
bool AppFrameListener::keyReleased(const OIS::KeyEvent &e) { if(mInputState == INPUTSTATE_INGAME) { switch( mInputMappingManager->getKeyAction(e.key)) { case KA__PITCH_DOWN: { //mAirplane->addPitchForce(PITCHFORCE_2); mNetworkManager->applyAirplaneInput(INPUTACTION_PITCHDOWN, false); break; } case KA__PITCH_UP: { //mAirplane->addPitchForce(-PITCHFORCE_2); mNetworkManager->applyAirplaneInput(INPUTACTION_PITCHUP, false); break; } case KA__ROLL_LEFT: { //mAirplane->addRollForce(ROLLFORCE_2); mNetworkManager->applyAirplaneInput(INPUTACTION_ROLLLEFT, false); break; } case KA__ROLL_RIGHT: { //mAirplane->addRollForce(-ROLLFORCE_2); mNetworkManager->applyAirplaneInput(INPUTACTION_ROLLRIGHT, false); break; } case KA__LOOK_BACK: { mCamLookBack = false; mHUDManager->setCrosshairVisible(true); break; } case KA__FIRE1: { mNetworkManager->applyAirplaneInput(INPUTACTION_SHOT1, false); break; } case KA__DEBUGNEWTON: { mShowNewtonDebug = false; mWorld->getDebugger().hideDebugInformation(); break; } default: break; } // switch return true; } if(mInputState == INPUTSTATE_SPECTATOR) { switch (e.key) { case OIS::KC_UP: case OIS::KC_W: mDirection.z -= mMove; break; case OIS::KC_DOWN: case OIS::KC_S: mDirection.z -= -mMove; break; case OIS::KC_LEFT: case OIS::KC_A: mDirection.x -= mMove; break; case OIS::KC_RIGHT: case OIS::KC_D: mDirection.x -= -mMove; break; case OIS::KC_PGDOWN: case OIS::KC_Q: mDirection.y -= -mMove; break; case OIS::KC_PGUP: case OIS::KC_E: mDirection.y -= mMove; break; case OIS::KC_F3: mShowNewtonDebug = false; mWorld->getDebugger().hideDebugInformation(); break; case OIS::KC_SPACE: Ogre::OverlayManager::getSingletonPtr()->getByName("RealToys/PopupMessageOverlay")->hide(); if(mOriginalInputState == INPUTSTATE_INGAME) { if(mInterSenseMgr->isActive()) { mInterSenseMgr->resetAngles(); } mCamPosition = 2; nextCamera(); mNetworkManager->requestAirplane(); mInputState = INPUTSTATE_INGAME; } default: break; } // switch return true; } return true; }
// KeyListener bool AppFrameListener::keyPressed(const OIS::KeyEvent &e) { switch(e.key) { case OIS::KC_ADD: mStereoMgr->setEyesSpacing(mStereoMgr->getEyesSpacing() + 0.1f); Ogre::OverlayManager::getSingletonPtr()->getOverlayElement("RealToys/DebugText")->show(); Ogre::OverlayManager::getSingletonPtr()->getOverlayElement("RealToys/DebugText")->setCaption( "EYES SPACING = " + Ogre::StringConverter::toString(mStereoMgr->getEyesSpacing())); break; case OIS::KC_SUBTRACT: Ogre::OverlayManager::getSingletonPtr()->getOverlayElement("RealToys/DebugText")->show(); mStereoMgr->setEyesSpacing(mStereoMgr->getEyesSpacing() - 0.1f); Ogre::OverlayManager::getSingletonPtr()->getOverlayElement("RealToys/DebugText")->setCaption( "EYES SPACING = " + Ogre::StringConverter::toString(mStereoMgr->getEyesSpacing())); break; case OIS::KC_MULTIPLY: mStereoMgr->setEyesSpacing(0.06f); Ogre::OverlayManager::getSingletonPtr()->getOverlayElement("RealToys/DebugText")->setCaption( "EYES SPACING = " + Ogre::StringConverter::toString(mStereoMgr->getEyesSpacing())); break; } if(mInputState == INPUTSTATE_INGAME) { switch(mInputMappingManager->getKeyAction(e.key)) { case KA__PITCH_DOWN: { //mAirplane->addPitchForce(-PITCHFORCE_2); mNetworkManager->applyAirplaneInput(INPUTACTION_PITCHDOWN, true); break; } case KA__PITCH_UP: { //mAirplane->addPitchForce(PITCHFORCE_2); mNetworkManager->applyAirplaneInput(INPUTACTION_PITCHUP, true); break; } case KA__ROLL_LEFT: { //mAirplane->addRollForce(-ROLLFORCE_2); mNetworkManager->applyAirplaneInput(INPUTACTION_ROLLLEFT, true); break; } case KA__ROLL_RIGHT: { //mAirplane->addRollForce(ROLLFORCE_2); mNetworkManager->applyAirplaneInput(INPUTACTION_ROLLRIGHT, true); break; } case KA__DEC_THRUST: { //mAirplane->decreaseThrust(); mNetworkManager->applyAirplaneInput(INPUTACTION_DECSPEED, true); break; } case KA__INC_THRUST: { //mAirplane->increaseThrust(); mNetworkManager->applyAirplaneInput(INPUTACTION_INCSPEED, true); break; } case KA__THRUST_0: { //mAirplane->setThrustForce(THRUSTFORCE_0); mNetworkManager->applyAirplaneInput(INPUTACTION_SPEED0, true); break; } case KA__THRUST_1: { //mAirplane->setThrustForce(THRUSTFORCE_1); mNetworkManager->applyAirplaneInput(INPUTACTION_SPEED1, true); break; } case KA__THRUST_2: { //mAirplane->setThrustForce(THRUSTFORCE_2); mNetworkManager->applyAirplaneInput(INPUTACTION_SPEED2, true); break; } case KA__THRUST_3: { //mAirplane->setThrustForce(THRUSTFORCE_3); mNetworkManager->applyAirplaneInput(INPUTACTION_SPEED3, true); break; } case KA__NEXT_CAM: { nextCamera(); break; } case KA__LOOK_BACK: { mCamLookBack = true; mHUDManager->setCrosshairVisible(false); break; } case KA__FIRE1: { mNetworkManager->applyAirplaneInput(INPUTACTION_SHOT1, true); break; } case KA_TOGGLE_ISENSE: { if(mNetworkManager->isServer()) { bool isenseWasActive = mInterSenseMgr->isActive(); if(isenseWasActive) { mInterSenseMgr->setActive(false); mAirplane->setPitchForce(0.0); mAirplane->setRollForce(0.0); } else { // is intersense started? if(mInterSenseMgr->isInited() == false) { // try to start it up if(mInterSenseMgr->init()) { mInterSenseMgr->resetAngles(); } } mInterSenseMgr->setActive(true); } } break; } case KA_RESET_ISENSE: { if(mInterSenseMgr->isActive()) { mInterSenseMgr->resetAngles(); } break; } case KA__DEBUGPANEL: { mHUDManager->changeDebugStatsOverlayVisibility(); break; } case KA__DEBUGDRAWMODE: { mSceneDetailIndex = (mSceneDetailIndex+1)%3 ; switch(mSceneDetailIndex) { case 0 : mCamera->setPolygonMode(Ogre::PM_SOLID); break; case 1 : mCamera->setPolygonMode(Ogre::PM_WIREFRAME); break; case 2 : mCamera->setPolygonMode(Ogre::PM_POINTS); break; } break; } case KA__DEBUGNEWTON: { mShowNewtonDebug = true; break; } case KA__DEC_SOUND: { mSoundMgr->setMasterVolume(mSoundMgr->getMasterVolume()-0.1f); break; } case KA__INC_SOUND: { mSoundMgr->setMasterVolume(mSoundMgr->getMasterVolume()+0.1f); break; } case KA__SCREEN_SHOT: { mWindow->writeContentsToTimestampedFile("screenshot",".jpg"); break; } case KA__EXIT: { this->end(); break; } default: break; } //switch return true; } if(mInputState == INPUTSTATE_SPECTATOR) { switch (e.key) { case OIS::KC_UP: case OIS::KC_W: mDirection.z += mMove; break; case OIS::KC_DOWN: case OIS::KC_S: mDirection.z += -mMove; break; case OIS::KC_LEFT: case OIS::KC_A: mDirection.x += mMove; break; case OIS::KC_RIGHT: case OIS::KC_D: mDirection.x += -mMove; break; case OIS::KC_PGDOWN: case OIS::KC_Q: mDirection.y += -mMove; break; case OIS::KC_PGUP: case OIS::KC_E: mDirection.y += mMove; break; case OIS::KC_F9: mHUDManager->changeDebugStatsOverlayVisibility(); break; case OIS::KC_F10: { mSceneDetailIndex = (mSceneDetailIndex+1)%3 ; switch(mSceneDetailIndex) { case 0 : mCamera->setPolygonMode(Ogre::PM_SOLID); break; case 1 : mCamera->setPolygonMode(Ogre::PM_WIREFRAME); break; case 2 : mCamera->setPolygonMode(Ogre::PM_POINTS); break; } break; } case OIS::KC_F11: mShowNewtonDebug = true; break; case OIS::KC_F12: { mWindow->writeContentsToTimestampedFile("screenshot",".jpg"); break; } case OIS::KC_ESCAPE: this->end(); break; default: break; } return true; } return true; }
void ImageReader::nextCamera() { nextCamera(_devices, &_cameraIndex); }