2023-04-04 13:46:50 +00:00
|
|
|
|
#ifndef TRS_H
|
|
|
|
|
#define TRS_H
|
|
|
|
|
|
|
|
|
|
#define T_SENSITIVITY 0.001f
|
2023-04-04 13:47:44 +00:00
|
|
|
|
#define R_SENSITIVITY 0.01f
|
2023-04-04 14:04:40 +00:00
|
|
|
|
#define S_SENSITIVITY 0.00001f
|
2023-04-04 13:46:50 +00:00
|
|
|
|
|
|
|
|
|
#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); // Взаимодействие с инструментом
|
|
|
|
|
};
|
|
|
|
|
|
2023-04-04 13:47:44 +00:00
|
|
|
|
// Инструмент поворота
|
|
|
|
|
class Rotate : public TRS
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
Rotate();
|
|
|
|
|
virtual void process(GLuint64 selectedID, GLuint etc, const glm::vec4& drot); // Взаимодействие с инструментом
|
|
|
|
|
};
|
|
|
|
|
|
2023-04-04 14:04:40 +00:00
|
|
|
|
// Инструмент масштабирования
|
|
|
|
|
class Scale : public TRS
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
Scale();
|
|
|
|
|
virtual void process(GLuint64 selectedID, GLuint etc, const glm::vec4& dscale); // Взаимодействие с инструментом
|
|
|
|
|
};
|
|
|
|
|
|
2023-04-04 13:46:50 +00:00
|
|
|
|
#endif // TRS_H
|