Инструмент взаимодействует со светом
This commit is contained in:
parent
ff73d64e06
commit
de0a6beea8
@ -32,13 +32,18 @@ class Bulb
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Класс лампочки (точечный источник с возможностью отладочного вывода)
|
// Класс лампочки (точечный источник с возможностью отладочного вывода)
|
||||||
class BulbDebug
|
class BulbDebug : public I_Movable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BulbDebug(Bulb* ref = NULL); // Конструктор с привязкой к источнику
|
BulbDebug(Bulb* ref = NULL); // Конструктор с привязкой к источнику
|
||||||
|
|
||||||
void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Отрисовка отладочной лампы и сферы
|
void render(ShaderProgram &shaderProgram, UBO &material_buffer); // Отрисовка отладочной лампы и сферы
|
||||||
|
|
||||||
|
virtual void dPosition(const glm::vec3& dvec); // Сдвинуть объект на dvec
|
||||||
|
virtual void dRotation(const glm::vec3& dvec); // Повернуть объект на dvec
|
||||||
|
virtual void dScale(const glm::vec3& dvec); // Увеличить объект на dvec
|
||||||
|
virtual const glm::vec3 getPos(); // Получить позицию объекта
|
||||||
|
|
||||||
Bulb* data;
|
Bulb* data;
|
||||||
private:
|
private:
|
||||||
static GrouptedModel bulb_model;
|
static GrouptedModel bulb_model;
|
||||||
|
@ -158,3 +158,40 @@ void Bulb::recalc_pov()
|
|||||||
vp[4] = shadowProj * glm::lookAt(position, position + glm::vec3( 0.0f, 0.0f, 1.0f), glm::vec3(0.0f, -1.0f, 0.0f));
|
vp[4] = shadowProj * glm::lookAt(position, position + glm::vec3( 0.0f, 0.0f, 1.0f), glm::vec3(0.0f, -1.0f, 0.0f));
|
||||||
vp[5] = shadowProj * glm::lookAt(position, position + glm::vec3( 0.0f, 0.0f, -1.0f), glm::vec3(0.0f, -1.0f, 0.0f));
|
vp[5] = shadowProj * glm::lookAt(position, position + glm::vec3( 0.0f, 0.0f, -1.0f), glm::vec3(0.0f, -1.0f, 0.0f));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Сдвинуть объект на dvec
|
||||||
|
void BulbDebug::dPosition(const glm::vec3& dvec)
|
||||||
|
{
|
||||||
|
if (data)
|
||||||
|
data->position += dvec;
|
||||||
|
}
|
||||||
|
|
||||||
|
#include <glm/gtx/rotate_vector.hpp>
|
||||||
|
// Повернуть объект на dvec
|
||||||
|
void BulbDebug::dRotation(const glm::vec3& dvec)
|
||||||
|
{
|
||||||
|
if (data)
|
||||||
|
{
|
||||||
|
data->direction = glm::rotateX(data->direction, 0.1f*dvec.x);
|
||||||
|
data->direction = glm::rotateY(data->direction, 0.1f*dvec.y);
|
||||||
|
data->direction = glm::rotateZ(data->direction, 0.1f*dvec.z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Увеличить объект на dvec
|
||||||
|
void BulbDebug::dScale(const glm::vec3& dvec)
|
||||||
|
{
|
||||||
|
if (data)
|
||||||
|
{
|
||||||
|
data->radius += (dvec.x + dvec.y + dvec.z)*500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Получить позицию объекта
|
||||||
|
const glm::vec3 BulbDebug::getPos()
|
||||||
|
{
|
||||||
|
if (data)
|
||||||
|
return data->position;
|
||||||
|
else
|
||||||
|
return glm::vec3(0);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user