Ejemplo n.º 1
0
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;
}
Ejemplo n.º 5
0
void ImageReader::nextCamera() {
    nextCamera(_devices, &_cameraIndex);
}