-
Notifications
You must be signed in to change notification settings - Fork 0
/
Camera.h
41 lines (30 loc) · 882 Bytes
/
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
#pragma once
#include <Bullet\btBulletDynamicsCommon.h>
#include <deque>
#include <glm\vec3.hpp>
// Manages a camera that follows the user sans jerkiness.
class Camera
{
glm::vec3 cameraPos;
glm::quat cameraRotation;
btRigidBody* playerObject;
// In degrees.
glm::vec2 yawLimits;
glm::vec2 pitchLimits;
float centerPitch;
float currentYaw;
float currentPitch;
std::deque<glm::mat4> lastMatrices;
void UpdateCamera();
glm::vec3 rotateAmounts;
float angle;
public:
Camera(float centerPitch, glm::vec2 yawLimits, glm::vec2 pitchLimits);
void Initialize(btRigidBody* playerObject);
void Update(float elapsedTime);
void Yaw(float factor);
void Pitch(float factor);
const glm::vec3 GetViewPosition() const;
const glm::quat GetViewOrientation() const;
const glm::mat4 GetViewMatrix() const;
};