45 lines
1.5 KiB
C++
45 lines
1.5 KiB
C++
#ifndef TRS_H
|
||
#define TRS_H
|
||
|
||
#define T_SENSITIVITY 0.001f
|
||
#define R_SENSITIVITY 0.01f
|
||
#define S_SENSITIVITY 0.00001f
|
||
|
||
#include "Scene.h"
|
||
|
||
// Интерфейс инструмента
|
||
class TRS
|
||
{
|
||
public:
|
||
void render(GLuint64 selectedID, ShaderProgram &shaderProgram, UBO &material_buffer); // Рендер инструмента нужного типа для выбранного объекта
|
||
virtual void process(GLuint64 selectedID, GLuint etc, const glm::vec4& dpos) = 0; // Взаимодействие с инструментом
|
||
protected:
|
||
void init_etc(); // Инициализирует дополнительную информацию модели
|
||
Scene tool; // Модель
|
||
};
|
||
|
||
// Инструмент трансформации
|
||
class Transform : public TRS
|
||
{
|
||
public:
|
||
Transform();
|
||
virtual void process(GLuint64 selectedID, GLuint etc, const glm::vec4& dpos); // Взаимодействие с инструментом
|
||
};
|
||
|
||
// Инструмент поворота
|
||
class Rotate : public TRS
|
||
{
|
||
public:
|
||
Rotate();
|
||
virtual void process(GLuint64 selectedID, GLuint etc, const glm::vec4& drot); // Взаимодействие с инструментом
|
||
};
|
||
|
||
// Инструмент масштабирования
|
||
class Scale : public TRS
|
||
{
|
||
public:
|
||
Scale();
|
||
virtual void process(GLuint64 selectedID, GLuint etc, const glm::vec4& dscale); // Взаимодействие с инструментом
|
||
};
|
||
|
||
#endif // TRS_H
|