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