Advertisement
HugoBallee

cameraMovements.cpp

Dec 1st, 2012
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. POINT mouseLastPos;
  2.  
  3. Vector4 position;
  4. float elevation, azimut;
  5. int trX, trZ;
  6.  
  7. void MyC3DEngine::Setup(HWND hWnd)
  8. {
  9.     position = Vector4(0.0, -50.0, 0.0, true);
  10.  
  11.     elevation = 0.0f;
  12.     azimut = 0.0f;
  13.  
  14.     // Mouse Position
  15.     mouseLastPos.x = 0.0f;
  16.     mouseLastPos.y = 0.0f;
  17. }
  18.  
  19. void MyC3DEngine::Update(float fDT)
  20. {
  21.     if ((trZ != 0) || (trX !=0))
  22.         position += (Matrix4::rotationX(elevation) * Matrix4::rotationY(azimut)).transpose() * Vector4((float)trX, 0.0f, (float)trZ);
  23.  
  24.     trX = 0;
  25.     trZ = 0;
  26. }
  27.  
  28. void MyC3DEngine::Render(unsigned int u32Width, unsigned int u32Height)
  29. {
  30.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  31.     glMatrixMode(GL_MODELVIEW);
  32.     glLoadIdentity();
  33.  
  34.     Matrix4 view = Matrix4::rotationX(elevation) * Matrix4::rotationY(azimut) * Matrix4::translation(&position);
  35.  
  36.     glEnable(GL_DEPTH_TEST);
  37.    
  38.     // YOUR CODE HERE
  39.  
  40.     glMatrixMode(GL_PROJECTION);
  41.     glLoadIdentity();
  42.     gluPerspective(70.0, (GLdouble)u32Width / (GLdouble)u32Height, 0.5, 100.0);
  43. }
  44.  
  45. void MyC3DEngine::MouseMove(POINT Pos)
  46. {
  47.     azimut -= (Pos.x - mouseLastPos.x) * MOUSE_SPEED;
  48.  
  49.     elevation += (Pos.y - mouseLastPos.y) * MOUSE_SPEED;
  50.     if (elevation >= halfMpi) elevation = halfMpi;
  51.     else if (elevation <= -halfMpi) elevation = -halfMpi;
  52.  
  53.     mouseLastPos = Pos;
  54. }
  55.  
  56. void MyC3DEngine::KeyDown(int s32VirtualKey)
  57. {
  58.     switch (s32VirtualKey) {
  59.     case VK_LEFT:
  60.         trX = 1;
  61.         break;
  62.     case VK_RIGHT:
  63.         trX = -1;
  64.         break;
  65.     case VK_UP:
  66.         trZ = 1;
  67.         break;
  68.     case VK_DOWN:
  69.         trZ = -1;
  70.         break;
  71.     default : break;
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement