00001 #include "cameralistener.h" 00002 00003 using namespace Ogre; 00004 00011 CameraListener::CameraListener(SceneManager* scene,Camera* cam, OIS::Keyboard* keyboard, OIS::Mouse* mouse) 00012 { 00013 mSceneMgr = scene; 00014 mCamera = cam; 00015 mKeyboard = keyboard; 00016 mMouse = mouse; 00017 00018 moveSpeed = 10; 00019 rotateSpeed = 0.15; 00020 toggle = 0.0; 00021 00022 mCamNode = mCamera->getParentSceneNode(); 00023 mMouse->setEventCallback(this); 00024 } 00025 00026 CameraListener::~CameraListener() 00027 { 00028 } 00029 00030 bool CameraListener::frameStarted(const FrameEvent &evt) 00031 { 00032 mKeyboard->capture(); 00033 mMouse->capture(); 00034 toggle -= evt.timeSinceLastFrame; 00035 00036 Vector3 transVector = Vector3::ZERO; 00037 if(mKeyboard->isKeyDown(OIS::KC_W)) transVector.z-=moveSpeed; 00038 if(mKeyboard->isKeyDown(OIS::KC_S)) transVector.z+=moveSpeed; 00039 if(mKeyboard->isKeyDown(OIS::KC_D)) transVector.x+=moveSpeed; 00040 if(mKeyboard->isKeyDown(OIS::KC_A)) transVector.x-=moveSpeed; 00041 if(mKeyboard->isKeyDown(OIS::KC_PGUP)) transVector.y+=moveSpeed; 00042 if(mKeyboard->isKeyDown(OIS::KC_PGDOWN)) transVector.y-=moveSpeed; 00043 if(mKeyboard->isKeyDown(OIS::KC_LSHIFT)) moveSpeed=50; 00044 else moveSpeed = 10; 00045 if((mKeyboard->isKeyDown(OIS::KC_R)) && toggle < 0){ 00046 rendType = (rendType+1)%3; 00047 switch(rendType){ 00048 case 0 : mCamera->setPolygonMode(PM_SOLID); break; 00049 case 1 : mCamera->setPolygonMode(PM_WIREFRAME); break; 00050 case 2 : mCamera->setPolygonMode(PM_POINTS); break; 00051 } 00052 toggle = 0.5; 00053 } 00054 mCamNode->translate(transVector * evt.timeSinceLastFrame, Node::TS_LOCAL); 00055 return true; 00056 } 00057 00058 bool CameraListener::frameEnded(const FrameEvent &evt) 00059 { 00060 return true; 00061 } 00062 00063 bool CameraListener::mouseMoved(const OIS::MouseEvent &e) 00064 { 00065 mCamNode->yaw(Degree(-rotateSpeed * e.state.X.rel), Node::TS_WORLD); 00066 mCamNode->pitch(Degree(-rotateSpeed * e.state.Y.rel), Node::TS_LOCAL); 00067 return true; 00068 } 00069 00070 bool CameraListener::mousePressed(const OIS::MouseEvent &e, OIS::MouseButtonID id) 00071 { 00072 return true; 00073 } 00074 00075 bool CameraListener::mouseReleased(const OIS::MouseEvent &e, OIS::MouseButtonID id) 00076 { 00077 return true; 00078 }
1.5.6