Доступ к текущей используемой камере
This commit is contained in:
parent
7dba133763
commit
795aac516d
|
@ -41,6 +41,8 @@ class Camera : public Node
|
|||
void setSensitivity(float sensitivity); // Изменяет чувствительность мыши
|
||||
const float& getSensitivity() const; // Возвращает чувствительность мыши
|
||||
|
||||
void use(); // Использование этой камеры как текущей
|
||||
static Camera& current(); // Ссылка на текущую используемую камеру
|
||||
protected:
|
||||
Camera(const glm::vec3 &position, const glm::vec3 &initialRotation); // Защищенный (protected) конструктор камеры без перспективы
|
||||
|
||||
|
@ -52,6 +54,8 @@ class Camera : public Node
|
|||
float sensitivity; // Чувствительность мыши
|
||||
|
||||
virtual void recalcMatrices(); // Метод пересчета матрицы вида и произведения Вида*Проекции по необходимости, должен сбрасывать флаг changed
|
||||
|
||||
static Camera* p_current; // Указатель на текущую используемую камеру
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
#include "Camera.h"
|
||||
|
||||
// Указатель на текущую используемую камеру
|
||||
Camera* Camera::p_current = NULL;
|
||||
|
||||
// Защищенный (protected) конструктор камеры без перспективы
|
||||
Camera::Camera(const glm::vec3 &pos, const glm::vec3 &initialRotation) : Node(NULL) // Пусть по умолчанию камера не относится к сцене
|
||||
{
|
||||
|
@ -56,7 +59,8 @@ Camera& Camera::operator=(const Camera& other)
|
|||
// Деструктор
|
||||
Camera::~Camera()
|
||||
{
|
||||
|
||||
if (p_current == this)
|
||||
p_current = NULL;
|
||||
}
|
||||
|
||||
// Возвращает ссылку на константную матрицу проекции
|
||||
|
@ -160,3 +164,20 @@ void Camera::rotate(const glm::vec2 &xyOffset)
|
|||
changed = true;
|
||||
invalidateParent(); // Проход потомков в глубину с изменением флага parent_changed
|
||||
}
|
||||
|
||||
// Использование этой камеры как текущей
|
||||
void Camera::use()
|
||||
{
|
||||
p_current = this;
|
||||
}
|
||||
|
||||
// Ссылка на текущую используемую камеру
|
||||
Camera& Camera::current()
|
||||
{
|
||||
static Camera default_cam(800.0f/600.0f);
|
||||
|
||||
if (!p_current)
|
||||
return default_cam;
|
||||
else
|
||||
return *p_current;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue