Инструмент взаимодействует со светом
This commit is contained in:
parent
6907948c27
commit
9e67eafdfc
@ -32,13 +32,18 @@ class Bulb
|
||||
};
|
||||
|
||||
// Класс лампочки (точечный источник с возможностью отладочного вывода)
|
||||
class BulbDebug
|
||||
class BulbDebug : public I_Movable
|
||||
{
|
||||
public:
|
||||
BulbDebug(Bulb* ref = NULL); // Конструктор с привязкой к источнику
|
||||
|
||||
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;
|
||||
private:
|
||||
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[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