diff --git a/include/Model.h b/include/Model.h index 14ec6f5..62bdb95 100644 --- a/include/Model.h +++ b/include/Model.h @@ -30,13 +30,27 @@ struct ID GLuint etc = 0; // Дополнительная информация }; +class I_Movable +{ + public: + virtual void dPosition(const glm::vec3& dvec) = 0; // Сдвинуть объект на dvec + virtual void dRotation(const glm::vec3& dvec) = 0; // Повернуть объект на dvec + virtual void dScale(const glm::vec3& dvec) = 0; // Увеличить объект на dvec + virtual const glm::vec3 getPos() = 0; // Получить позицию объекта +}; + // Класс определяющий положение, вращение и размер объекта -class Movable +class Movable : I_Movable { public: Movable(); // Конструктор без параметров Movable(const Movable& copy); // Конструктор копирования + 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(); // Получить позицию объекта + glm::vec3 position; // позиция модели glm::vec3 rotation; // поворот модели glm::vec3 scale; // масштабирование модели diff --git a/src/Model.cpp b/src/Model.cpp index d1324d7..7541750 100644 --- a/src/Model.cpp +++ b/src/Model.cpp @@ -571,3 +571,27 @@ void GrouptedModel::set_group_id(GLuint64 id, GLuint etc) part.id.etc = etc; } } + +// Сдвинуть объект на dvec +void Movable::dPosition(const glm::vec3& dvec) +{ + position += dvec; +} + +// Повернуть объект на dvec +void Movable::dRotation(const glm::vec3& dvec) +{ + rotation += dvec; +} + +// Увеличить объект на dvec +void Movable::dScale(const glm::vec3& dvec) +{ + scale += dvec; +} + +// Получить позицию объекта +const glm::vec3 Movable::getPos() +{ + return position; +}