-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcamera.h
66 lines (55 loc) · 1.21 KB
/
camera.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
camera.h
OpenGL Camera Code
*/
#ifndef CAMERA_H
#define CAMERA_H
#include "stdafx.h"
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <SDL2/SDL.h>
extern SDL_Window* window;
extern SDL_Event e;
using namespace std;
enum CameraDirection {
LEFT, RIGHT, FORWARD, BACK, UP, DOWN, ROT_LEFT, ROT_RIGHT
};
class Camera {
private :
glm::mat4 ViewMatrix;
glm::mat4 ProjectionMatrix;
// Initial position : on +Z
glm::vec3 position,InitialPos;
// Initial horizontal angle : toward -Z
float horizontalAngle = 3.14f;
// Initial vertical angle : none
float verticalAngle = 0.0f;
// Initial Field of View
float initialFoV = 45.0f;
// Actual direction
glm::vec3 direction;
// Right vector
glm::vec3 right;
// Up
glm::vec3 up;
// LookAt
// glm::vec3 lookAt = glm::vec3(0, 0, -10);
// Time difference
float timeDifference = 0;
float speed = 0.20f; // 3 units / second
float mouseSpeed = 0.01f;
int temp = 0;
public:
// Camera();
// ~Camera();
void SetPosition(glm::vec3);
void move(CameraDirection);
void computeMatricesFromInputs();
glm::mat4 getViewMatrix();
glm::mat4 getProjectionMatrix();
void Reset();
void rotate();
void calcMatrices();
void s(int i){ temp += i; }
};
#endif